//=================================================================
//
//  The following code was generated from Spiral FFT IP Core Generator.
//  March 2016
//
//  These were the inputs to the generator:
//  DFT Size = 2048
//  direction = forward
//  data type = 12 bit fixed point, scaled 
//  architecture = iterative reuse
//  radix = 2
//  streaming width = 2
//  data ordering = natural input / natural output
//  BRAM budget = 1000
//  patented
//
//=================================================================


/*
 * This source file contains a Verilog description of an IP core
 * automatically generated by the SPIRAL HDL Generator.
 *
 * This product includes a hardware design developed by Carnegie Mellon University.
 *
 * Copyright (c) 2005-2011 by Peter A. Milder for the SPIRAL Project,
 * Carnegie Mellon University
 *
 * For more information, see the SPIRAL project website at:
 *   http://www.spiral.net
 *
 * This design is provided for internal, non-commercial research use only
 * and is not for redistribution, with or without modifications.
 * 
 * You may not use the name "Carnegie Mellon University" or derivations
 * thereof to endorse or promote products derived from this software.
 *
 * THE SOFTWARE IS PROVIDED "AS-IS" WITHOUT ANY WARRANTY OF ANY KIND, EITHER
 * EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO ANY WARRANTY
 * THAT THE SOFTWARE WILL CONFORM TO SPECIFICATIONS OR BE ERROR-FREE AND ANY
 * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE,
 * TITLE, OR NON-INFRINGEMENT.  IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
 * BE LIABLE FOR ANY DAMAGES, INCLUDING BUT NOT LIMITED TO DIRECT, INDIRECT,
 * SPECIAL OR CONSEQUENTIAL DAMAGES, ARISING OUT OF, RESULTING FROM, OR IN
 * ANY WAY CONNECTED WITH THIS SOFTWARE (WHETHER OR NOT BASED UPON WARRANTY,
 * CONTRACT, TORT OR OTHERWISE).
 *
 */

/* Portions of this design are protected by US Patent no. 8,321,823
 * (assignee: Carnegie Mellon University).
 */

//   Input/output stream: 2 complex words per cycle
//   Throughput: one transform every 11287 cycles
//   Latency: 12267 cycles

//   Resources required:
//     4 multipliers (12 x 12 bit)
//     1 adders (11 x 11 bit)
//     6 adders (12 x 12 bit)
//     4 RAMs (2048 words, 24 bits per word)
//     2 ROMs (2048 words, 12 bits per word)

// Generated on Thu Mar 03 03:29:02 EST 2016

// Latency: 12267 clock cycles
// Throughput: 1 transform every 11287 cycles


// We use an interleaved complex data format.  X0 represents the
// real portion of the first input, and X1 represents the imaginary
// portion.  The X variables are system inputs and the Y variables
// are system outputs.

// The design uses a system of flag signals to indicate the
// beginning of the input and output data streams.  The 'next'
// input (asserted high), is used to instruct the system that the
// input stream will begin on the following cycle.

// This system has a 'gap' of 11287 cycles.  This means that
// 11287 cycles must elapse between the beginning of the input
// vectors.

// The output signal 'next_out' (also asserted high) indicates
// that the output vector will begin streaming out of the system
 // on the following cycle.

// The system has a latency of 12267 cycles.  This means that
// the 'next_out' will be asserted 12267 cycles after the user
// asserts 'next'.

// The simple testbench below will demonstrate the timing for loading
// and unloading data vectors.
// The system reset signal is asserted high.

// Please note: when simulating floating point code, you must include
// Xilinx's DSP slice simulation module.

/*
module dft_testbench();
   reg clk, reset, next;
   wire next_out;
   integer i, j, k, l, m;
   reg [15:0] counter;
   reg [11:0] in [3:0];
   wire [11:0] X0;
   wire [11:0] Y0;
   wire [11:0] X1;
   wire [11:0] Y1;
   wire [11:0] X2;
   wire [11:0] Y2;
   wire [11:0] X3;
   wire [11:0] Y3;
   reg clrCnt;
   assign X0 = in[0];
   assign X1 = in[1];
   assign X2 = in[2];
   assign X3 = in[3];

   initial clk = 0;

   always #10000 clk = ~clk;


   // Instantiate top-level module of core 'X' signals are system inputs
   // and 'Y' signals are system outputs
   dft_top dft_top_instance (.clk(clk), .reset(reset), .next(next), .next_out(next_out),
    .X0(X0), .Y0(Y0),
    .X1(X1), .Y1(Y1),
    .X2(X2), .Y2(Y2),
    .X3(X3), .Y3(Y3));

   // You can use this counter to verify that the gap and latency are as expected.
   always @(posedge clk) begin
      if (clrCnt) counter <= 0;
      else counter <= counter+1;
   end


   initial begin
      @(posedge clk);
      @(posedge clk);

      // On the next cycle, begin loading input vector.
      next <= 1;
      clrCnt <= 1;
      @(posedge clk);
      clrCnt <= 0;
      next <= 0;

      // The 2048 complex data points enter the system over 1024 cycles
      for (j=0; j < 1023; j = j+1) begin
          // Input: 2 complex words per cycle
         for (k=0; k < 4; k = k+1) begin
            in[k] <= j*4 + k;
         end
         @(posedge clk);
      end
      j = 1023;
      for (k=0; k < 4; k = k+1) begin
         in[k] <= j*4 + k;
      end


      @(posedge clk);
      // Wait until the next data vector can be entered
      while (counter < 11285)
        @(posedge clk);

      // On the next cycle, we will start the next data vector
      next <= 1;
      clrCnt <= 1;
      @(posedge clk);
      clrCnt <= 0;
      next <= 0;

      // Start entering next input vector
      for (j=0; j < 1023; j = j+1) begin
         // Input 4 words per cycle
         for (k=0; k < 4; k = k+1) begin
            in[k] <= 4096 + j*4 + k;
          end
          @(posedge clk);
       end
       j = 1023;
       for (k=0; k < 4; k = k+1) begin
          in[k] <= 4096 + j*4 + k;
       end
   end


   initial begin
      // set initial values
      in[0] <= 0;
      in[1] <= 0;
      in[2] <= 0;
      in[3] <= 0;
      next <= 0;
      reset <= 0;

      @(posedge clk);
      reset <= 1;
      @(posedge clk);
      reset <= 0;
      @(posedge clk);
      @(posedge clk);
      // Wait until next_out goes high, then wait one clock cycle and begin receiving data
      @(posedge next_out);
      @(posedge clk); #1;
      $display("--- begin output 1---");

      for (m=0; m < 1023; m=m+1) begin
         $display("%x", Y0);
         $display("%x", Y1);
         $display("%x", Y2);
         $display("%x", Y3);
         @(posedge clk); #1;
      end
      $display("%x", Y0);
      $display("%x", Y1);
      $display("%x", Y2);
      $display("%x", Y3);
      // Wait until next_out goes high, then wait one clock cycle and begin receiving data
      @(posedge next_out);
      @(posedge clk); #1;
      $display("--- begin output 2---");

      for (m=0; m < 1023; m=m+1) begin
         $display("%x", Y0);
         $display("%x", Y1);
         $display("%x", Y2);
         $display("%x", Y3);
         @(posedge clk); #1;
      end
      $display("%x", Y0);
      $display("%x", Y1);
      $display("%x", Y2);
      $display("%x", Y3);
      $finish;
   end
endmodule
*/

// Latency: 12267
// Gap: 11287
// module_name_is:dft_top
module dft_top(clk, reset, next, next_out,
   X0, Y0,
   X1, Y1,
   X2, Y2,
   X3, Y3);

   output next_out;
   input clk, reset, next;

   input [11:0] X0,
      X1,
      X2,
      X3;

   output [11:0] Y0,
      Y1,
      Y2,
      Y3;

   wire [11:0] t0_0;
   wire [11:0] t0_1;
   wire [11:0] t0_2;
   wire [11:0] t0_3;
   wire next_0;
   wire [11:0] t1_0;
   wire [11:0] t1_1;
   wire [11:0] t1_2;
   wire [11:0] t1_3;
   wire next_1;
   wire [11:0] t2_0;
   wire [11:0] t2_1;
   wire [11:0] t2_2;
   wire [11:0] t2_3;
   wire next_2;
   assign t0_0 = X0;
   assign Y0 = t2_0;
   assign t0_1 = X1;
   assign Y1 = t2_1;
   assign t0_2 = X2;
   assign Y2 = t2_2;
   assign t0_3 = X3;
   assign Y3 = t2_3;
   assign next_0 = next;
   assign next_out = next_2;

// latency=980, gap=1024
   rc41776 stage0(.clk(clk), .reset(reset), .next(next_0), .next_out(next_1),
    .X0(t0_0), .Y0(t1_0),
    .X1(t0_1), .Y1(t1_1),
    .X2(t0_2), .Y2(t1_2),
    .X3(t0_3), .Y3(t1_3));


// latency=11287, gap=11287
   ICompose_46101 IComposeInst46328(.next(next_1), .clk(clk), .reset(reset), .next_out(next_2),
       .X0(t1_0), .Y0(t2_0),
       .X1(t1_1), .Y1(t2_1),
       .X2(t1_2), .Y2(t2_2),
       .X3(t1_3), .Y3(t2_3));


endmodule

// Latency: 980
// Gap: 1024
module rc41776(clk, reset, next, next_out,
   X0, Y0,
   X1, Y1,
   X2, Y2,
   X3, Y3);

   output next_out;
   input clk, reset, next;

   input [11:0] X0,
      X1,
      X2,
      X3;

   output [11:0] Y0,
      Y1,
      Y2,
      Y3;

   wire [23:0] t0;
   wire [23:0] s0;
   assign t0 = {X0, X1};
   wire [23:0] t1;
   wire [23:0] s1;
   assign t1 = {X2, X3};
   assign Y0 = s0[23:12];
   assign Y1 = s0[11:0];
   assign Y2 = s1[23:12];
   assign Y3 = s1[11:0];

   perm41774 instPerm46329(.x0(t0), .y0(s0),
    .x1(t1), .y1(s1),
   .clk(clk), .next(next), .next_out(next_out), .reset(reset)
);



endmodule

// Latency: 980
// Gap: 1024
module perm41774(clk, next, reset, next_out,
   x0, y0,
   x1, y1);
   parameter numBanks = 2;
   parameter logBanks = 1;
   parameter depth = 1024;
   parameter logDepth = 10;
   parameter width = 24;

   input [width-1:0]  x0;
   output [width-1:0]  y0;
   wire [width-1:0]  ybuff0;
   input [width-1:0]  x1;
   output [width-1:0]  y1;
   wire [width-1:0]  ybuff1;
   input 	      clk, next, reset;
   output 	     next_out;

   wire    	     next0;

   reg              inFlip0, outFlip0;
   reg              inActive, outActive;

   wire [logBanks-1:0] inBank0, outBank0;
   wire [logDepth-1:0] inAddr0, outAddr0;
   wire [logBanks-1:0] outBank_a0;
   wire [logDepth-1:0] outAddr_a0;
   wire [logDepth+logBanks-1:0] addr0, addr0b, addr0c;
   wire [logBanks-1:0] inBank1, outBank1;
   wire [logDepth-1:0] inAddr1, outAddr1;
   wire [logBanks-1:0] outBank_a1;
   wire [logDepth-1:0] outAddr_a1;
   wire [logDepth+logBanks-1:0] addr1, addr1b, addr1c;


   reg [logDepth-1:0]  inCount, outCount, outCount_d, outCount_dd, outCount_for_rd_addr, outCount_for_rd_data;  

   assign    addr0 = {inCount, 1'd0};
   assign    addr0b = {outCount, 1'd0};
   assign    addr0c = {outCount_for_rd_addr, 1'd0};
   assign    addr1 = {inCount, 1'd1};
   assign    addr1b = {outCount, 1'd1};
   assign    addr1c = {outCount_for_rd_addr, 1'd1};
    wire [width+logDepth-1:0] w_0_0, w_0_1, w_1_0, w_1_1;

    reg [width-1:0] z_0_0;
    reg [width-1:0] z_0_1;
    wire [width-1:0] z_1_0, z_1_1;

    wire [logDepth-1:0] u_0_0, u_0_1, u_1_0, u_1_1;

    always @(posedge clk) begin
    end

   assign inBank0[0] = addr0[10] ^ addr0[0];
   assign inAddr0[0] = addr0[9];
   assign inAddr0[1] = addr0[8];
   assign inAddr0[2] = addr0[7];
   assign inAddr0[3] = addr0[6];
   assign inAddr0[4] = addr0[5];
   assign inAddr0[5] = addr0[4];
   assign inAddr0[6] = addr0[3];
   assign inAddr0[7] = addr0[2];
   assign inAddr0[8] = addr0[1];
   assign inAddr0[9] = addr0[0];
   assign outBank0[0] = addr0b[10] ^ addr0b[0];
   assign outAddr0[0] = addr0b[1];
   assign outAddr0[1] = addr0b[2];
   assign outAddr0[2] = addr0b[3];
   assign outAddr0[3] = addr0b[4];
   assign outAddr0[4] = addr0b[5];
   assign outAddr0[5] = addr0b[6];
   assign outAddr0[6] = addr0b[7];
   assign outAddr0[7] = addr0b[8];
   assign outAddr0[8] = addr0b[9];
   assign outAddr0[9] = addr0b[10];
   assign outBank_a0[0] = addr0c[10] ^ addr0c[0];
   assign outAddr_a0[0] = addr0c[1];
   assign outAddr_a0[1] = addr0c[2];
   assign outAddr_a0[2] = addr0c[3];
   assign outAddr_a0[3] = addr0c[4];
   assign outAddr_a0[4] = addr0c[5];
   assign outAddr_a0[5] = addr0c[6];
   assign outAddr_a0[6] = addr0c[7];
   assign outAddr_a0[7] = addr0c[8];
   assign outAddr_a0[8] = addr0c[9];
   assign outAddr_a0[9] = addr0c[10];

   assign inBank1[0] = addr1[10] ^ addr1[0];
   assign inAddr1[0] = addr1[9];
   assign inAddr1[1] = addr1[8];
   assign inAddr1[2] = addr1[7];
   assign inAddr1[3] = addr1[6];
   assign inAddr1[4] = addr1[5];
   assign inAddr1[5] = addr1[4];
   assign inAddr1[6] = addr1[3];
   assign inAddr1[7] = addr1[2];
   assign inAddr1[8] = addr1[1];
   assign inAddr1[9] = addr1[0];
   assign outBank1[0] = addr1b[10] ^ addr1b[0];
   assign outAddr1[0] = addr1b[1];
   assign outAddr1[1] = addr1b[2];
   assign outAddr1[2] = addr1b[3];
   assign outAddr1[3] = addr1b[4];
   assign outAddr1[4] = addr1b[5];
   assign outAddr1[5] = addr1b[6];
   assign outAddr1[6] = addr1b[7];
   assign outAddr1[7] = addr1b[8];
   assign outAddr1[8] = addr1b[9];
   assign outAddr1[9] = addr1b[10];
   assign outBank_a1[0] = addr1c[10] ^ addr1c[0];
   assign outAddr_a1[0] = addr1c[1];
   assign outAddr_a1[1] = addr1c[2];
   assign outAddr_a1[2] = addr1c[3];
   assign outAddr_a1[3] = addr1c[4];
   assign outAddr_a1[4] = addr1c[5];
   assign outAddr_a1[5] = addr1c[6];
   assign outAddr_a1[6] = addr1c[7];
   assign outAddr_a1[7] = addr1c[8];
   assign outAddr_a1[8] = addr1c[9];
   assign outAddr_a1[9] = addr1c[10];

   nextReg #(978, 10) nextReg_46334(.X(next), .Y(next0), .reset(reset), .clk(clk));


   shiftRegFIFO #(2, 1) shiftFIFO_46337(.X(next0), .Y(next_out), .clk(clk));


   memArray2048_41774 #(numBanks, logBanks, depth, logDepth, width)
     memSys(.inFlip(inFlip0), .outFlip(outFlip0), .next(next), .reset(reset),
        .x0(w_1_0[width+logDepth-1:logDepth]), .y0(ybuff0),
        .inAddr0(w_1_0[logDepth-1:0]),
        .outAddr0(u_1_0), 
        .x1(w_1_1[width+logDepth-1:logDepth]), .y1(ybuff1),
        .inAddr1(w_1_1[logDepth-1:0]),
        .outAddr1(u_1_1), 
        .clk(clk));

   always @(posedge clk) begin
      if (reset == 1) begin
      z_0_0 <= 0;
      z_0_1 <= 0;
         inFlip0 <= 0; outFlip0 <= 1; outCount <= 0; inCount <= 0;
        outCount_for_rd_addr <= 0;
        outCount_for_rd_data <= 0;
      end
      else begin
          outCount_d <= outCount;
          outCount_dd <= outCount_d;
         if (inCount == 977)
            outCount_for_rd_addr <= 0;
         else
            outCount_for_rd_addr <= outCount_for_rd_addr+1;
         if (inCount == 979)
            outCount_for_rd_data <= 0;
         else
            outCount_for_rd_data <= outCount_for_rd_data+1;
      z_0_0 <= ybuff0;
      z_0_1 <= ybuff1;
         if (inCount == 977) begin
            outFlip0 <= ~outFlip0;
            outCount <= 0;
         end
         else
            outCount <= outCount+1;
         if (inCount == 1023) begin
            inFlip0 <= ~inFlip0;
         end
         if (next == 1) begin
            if (inCount >= 977)
               inFlip0 <= ~inFlip0;
            inCount <= 0;
         end
         else
            inCount <= inCount + 1;
      end
   end
    assign w_0_0 = {x0, inAddr0};
    assign w_0_1 = {x1, inAddr1};
    assign y0 = z_1_0;
    assign y1 = z_1_1;
    assign u_0_0 = outAddr_a0;
    assign u_0_1 = outAddr_a1;
    wire wr_ctrl_st_0;
    assign wr_ctrl_st_0 = inCount[9];

    switch #(logDepth+width) in_sw_0_0(.x0(w_0_0), .x1(w_0_1), .y0(w_1_0), .y1(w_1_1), .ctrl(wr_ctrl_st_0));
    wire rdd_ctrl_st_0;
    assign rdd_ctrl_st_0 = outCount_for_rd_data[9];

    switch #(width) out_sw_0_0(.x0(z_0_0), .x1(z_0_1), .y0(z_1_0), .y1(z_1_1), .ctrl(rdd_ctrl_st_0));
    wire rda_ctrl_st_0;
    assign rda_ctrl_st_0 = outCount_for_rd_addr[9];

    switch #(logDepth) rdaddr_sw_0_0(.x0(u_0_0), .x1(u_0_1), .y0(u_1_0), .y1(u_1_1), .ctrl(rda_ctrl_st_0));
endmodule

module memArray2048_41774(next, reset,
                x0, y0,
                inAddr0,
                outAddr0,
                x1, y1,
                inAddr1,
                outAddr1,
                clk, inFlip, outFlip);

   parameter numBanks = 2;
   parameter logBanks = 1;
   parameter depth = 1024;
   parameter logDepth = 10;
   parameter width = 24;
         
   input     clk, next, reset;
   input    inFlip, outFlip;
   wire    next0;
   
   input [width-1:0]   x0;
   output [width-1:0]  y0;
   input [logDepth-1:0] inAddr0, outAddr0;
   input [width-1:0]   x1;
   output [width-1:0]  y1;
   input [logDepth-1:0] inAddr1, outAddr1;
   nextReg #(1024, 10) nextReg_46342(.X(next), .Y(next0), .reset(reset), .clk(clk));


   memMod #(depth*2, width, logDepth+1) 
     memMod0(.in(x0), .out(y0), .inAddr({inFlip, inAddr0}),
	   .outAddr({outFlip, outAddr0}), .writeSel(1'b1), .clk(clk));   
   memMod #(depth*2, width, logDepth+1) 
     memMod1(.in(x1), .out(y1), .inAddr({inFlip, inAddr1}),
	   .outAddr({outFlip, outAddr1}), .writeSel(1'b1), .clk(clk));   
endmodule

module nextReg(X, Y, reset, clk);
   parameter depth=2, logDepth=1;

   output Y;
   input X;
   input              clk, reset;
   reg [logDepth:0] count;
   reg                active;

   assign Y = (count == depth) ? 1 : 0;

   always @ (posedge clk) begin
      if (reset == 1) begin
         count <= 0;
         active <= 0;
      end
      else if (X == 1) begin
         active <= 1;
         count <= 1;
      end
      else if (count == depth) begin
         count <= 0;
         active <= 0;
      end
      else if (active)
         count <= count+1;
   end
endmodule


module memMod(in, out, inAddr, outAddr, writeSel, clk);
   
   parameter depth=1024, width=16, logDepth=10;
   
   input [width-1:0]    in;
   input [logDepth-1:0] inAddr, outAddr;
   input 	        writeSel, clk;
   output [width-1:0] 	out;
   reg [width-1:0] 	out;
   
   // synthesis attribute ram_style of mem is block

   reg [width-1:0] 	mem[depth-1:0]; 
   
   always @(posedge clk) begin
      out <= mem[outAddr];
      
      if (writeSel)
        mem[inAddr] <= in;
   end
endmodule 



module memMod_dist(in, out, inAddr, outAddr, writeSel, clk);
   
   parameter depth=1024, width=16, logDepth=10;
   
   input [width-1:0]    in;
   input [logDepth-1:0] inAddr, outAddr;
   input 	        writeSel, clk;
   output [width-1:0] 	out;
   reg [width-1:0] 	out;
   
   // synthesis attribute ram_style of mem is distributed

   reg [width-1:0] 	mem[depth-1:0]; 
   
   always @(posedge clk) begin
      out <= mem[outAddr];
      
      if (writeSel)
        mem[inAddr] <= in;
   end
endmodule 

module switch(ctrl, x0, x1, y0, y1);
    parameter width = 16;
    input [width-1:0] x0, x1;
    output [width-1:0] y0, y1;
    input ctrl;
    assign y0 = (ctrl == 0) ? x0 : x1;
    assign y1 = (ctrl == 0) ? x1 : x0;
endmodule

module shiftRegFIFO(X, Y, clk);
   parameter depth=1, width=1;

   output [width-1:0] Y;
   input  [width-1:0] X;
   input              clk;

   reg [width-1:0]    mem [depth-1:0];
   integer            index;

   assign Y = mem[depth-1];

   always @ (posedge clk) begin
      for(index=1;index<depth;index=index+1) begin
         mem[index] <= mem[index-1];
      end
      mem[0]<=X;
   end
endmodule

// Latency: 11287
// Gap: 11287
module ICompose_46101(clk, reset, next, next_out,
      X0, Y0,
      X1, Y1,
      X2, Y2,
      X3, Y3);

   output next_out;
   reg next_out;
   input clk, reset, next;

   reg [10:0] cycle_count;
   reg [10:0] count;

   input [11:0] X0,
      X1,
      X2,
      X3;

   output [11:0] Y0,
      Y1,
      Y2,
      Y3;

   reg [11:0] Y0,
      Y1,
      Y2,
      Y3;

   reg int_next;
   reg state;
   wire [11:0] t0; 
   reg [11:0] s0;
   wire [11:0] t1; 
   reg [11:0] s1;
   wire [11:0] t2; 
   reg [11:0] s2;
   wire [11:0] t3; 
   reg [11:0] s3;

   reg [1:0] iri_state;
   wire int_next_out;
   reg [4:0] i1;

   statementList46099 instList46347 (.clk(clk), .reset(reset), .next(int_next), .next_out(int_next_out),
      .i1_in(i1),
    .X0(s0), .Y0(t0),
    .X1(s1), .Y1(t1),
    .X2(s2), .Y2(t2),
    .X3(s3), .Y3(t3));

   always @(posedge clk) begin
      if (reset == 1) begin
         int_next <= 0;
         i1 <= 10;
         cycle_count <= 0;
         next_out <= 0;
         iri_state <= 0;
         Y0 <= 0;
         Y1 <= 0;
         Y2 <= 0;
         Y3 <= 0;
      end
      else begin
         Y0 <= t0;
         Y1 <= t1;
         Y2 <= t2;
         Y3 <= t3;
         next_out <= 0;
         case (iri_state)
            0: begin
               i1 <= 10;
               cycle_count <= 0;
               if (next == 1) begin
                  int_next <= 1;
                  iri_state <= 1;
                  
               end
               else begin
                  int_next <= 0;
                  iri_state <= 0;
               end
            end
            1: begin
               int_next <= 0;
               cycle_count <= cycle_count + 1;
               i1 <= i1;
               if (cycle_count < 1024)
                  iri_state <= 1;
               else
                  iri_state <= 2;
            end
            2: begin
               cycle_count <= 0;
               i1 <= i1 - 1;
               if (i1 > 0) begin
                  iri_state <= 1;
                  int_next <= 1;
               end
               else begin
                  iri_state <= 0;
                  next_out <= 1;
                  int_next <= 0;
               end
            end
         endcase               
      end
   end

   always @(posedge clk) begin
      if (reset == 1) begin
         state <= 0;
         count <= 0;
         s0 <= 0;
         s1 <= 0;
         s2 <= 0;
         s3 <= 0;
      end      
      else begin
         case (state)
            0: begin
               count <= 0;
               if (next == 1) begin
                  state <= 1;
                  count <= 0;
                  s0 <= X0; 
                  s1 <= X1; 
                  s2 <= X2; 
                  s3 <= X3; 
               end
               else begin
                  state <= 0;
                  count <= 0;
                  s0 <= t0; 
                  s1 <= t1; 
                  s2 <= t2; 
                  s3 <= t3; 
               end               
            end
            1: begin
               count <= count + 1;
               if (count < 1024) begin
                  s0 <= X0; 
                  s1 <= X1; 
                  s2 <= X2; 
                  s3 <= X3; 
                  state <= 1;                    
               end
               else begin
                  s0 <= t0; 
                  s1 <= t1; 
                  s2 <= t2; 
                  s3 <= t3; 
                  state <= 0;
               end
            end
         endcase               
      end
   end
endmodule

// Latency: 1025
// Gap: 1024
// module_name_is:statementList46099
module statementList46099(clk, reset, next, next_out,
   i1_in,
   X0, Y0,
   X1, Y1,
   X2, Y2,
   X3, Y3);

   output next_out;
   input clk, reset, next;

   input [4:0] i1_in;
   input [11:0] X0,
      X1,
      X2,
      X3;

   output [11:0] Y0,
      Y1,
      Y2,
      Y3;

   wire [11:0] t0_0;
   wire [11:0] t0_1;
   wire [11:0] t0_2;
   wire [11:0] t0_3;
   wire next_0;
   wire [11:0] t1_0;
   wire [11:0] t1_1;
   wire [11:0] t1_2;
   wire [11:0] t1_3;
   wire next_1;
   wire [11:0] t2_0;
   wire [11:0] t2_1;
   wire [11:0] t2_2;
   wire [11:0] t2_3;
   wire next_2;
   wire [11:0] t3_0;
   wire [11:0] t3_1;
   wire [11:0] t3_2;
   wire [11:0] t3_3;
   wire next_3;
   wire [4:0] i1;
   wire [4:0] i1_0;
   assign t0_0 = X0;
   assign Y0 = t3_0;
   assign t0_1 = X1;
   assign Y1 = t3_1;
   assign t0_2 = X2;
   assign Y2 = t3_2;
   assign t0_3 = X3;
   assign Y3 = t3_3;
   assign next_0 = next;
   assign next_out = next_3;

   assign i1_0 = i1_in;

// latency=11, gap=1024
   DirSum_46014 DirSumInst46350(.next(next_0), .clk(clk), .reset(reset), .next_out(next_1),
.i1(i1_0),
       .X0(t0_0), .Y0(t1_0),
       .X1(t0_1), .Y1(t1_1),
       .X2(t0_2), .Y2(t1_2),
       .X3(t0_3), .Y3(t1_3));


// latency=2, gap=1024
   codeBlock46016 codeBlockIsnt46351(.clk(clk), .reset(reset), .next_in(next_1), .next_out(next_2),
       .X0_in(t1_0), .Y0(t2_0),
       .X1_in(t1_1), .Y1(t2_1),
       .X2_in(t1_2), .Y2(t2_2),
       .X3_in(t1_3), .Y3(t2_3));


// latency=1012, gap=1024
   rc46097 instrc46352(.clk(clk), .reset(reset), .next(next_2), .next_out(next_3),
    .X0(t2_0), .Y0(t3_0),
    .X1(t2_1), .Y1(t3_1),
    .X2(t2_2), .Y2(t3_2),
    .X3(t2_3), .Y3(t3_3));


endmodule

// Latency: 11
// Gap: 1024
module DirSum_46014(clk, reset, next, next_out,
      i1,
      X0, Y0,
      X1, Y1,
      X2, Y2,
      X3, Y3);

   output next_out;
   input clk, reset, next;

   input [4:0] i1;
   reg [9:0] i2;

   input [11:0] X0,
      X1,
      X2,
      X3;

   output [11:0] Y0,
      Y1,
      Y2,
      Y3;

   always @(posedge clk) begin
      if (reset == 1) begin
         i2 <= 0;
      end
      else begin
         if (next == 1)
            i2 <= 0;
         else if (i2 == 1023)
            i2 <= 0;
         else
            i2 <= i2 + 1;
      end
   end

   codeBlock41778 codeBlockIsnt46353(.clk(clk), .reset(reset), .next_in(next), .next_out(next_out),
.i2_in(i2),
.i1_in(i1),
       .X0_in(X0), .Y0(Y0),
       .X1_in(X1), .Y1(Y1),
       .X2_in(X2), .Y2(Y2),
       .X3_in(X3), .Y3(Y3));

endmodule

module D1_43962(addr, out, clk);
   input clk;
   output [11:0] out;
   reg [11:0] out, out2, out3;
   input [10:0] addr;

   always @(posedge clk) begin
      out2 <= out3;
      out <= out2;
   case(addr)
      0: out3 <= 12'h400;
      1: out3 <= 12'h400;
      2: out3 <= 12'h400;
      3: out3 <= 12'h400;
      4: out3 <= 12'h400;
      5: out3 <= 12'h400;
      6: out3 <= 12'h400;
      7: out3 <= 12'h400;
      8: out3 <= 12'h400;
      9: out3 <= 12'h400;
      10: out3 <= 12'h400;
      11: out3 <= 12'h3ff;
      12: out3 <= 12'h3ff;
      13: out3 <= 12'h3ff;
      14: out3 <= 12'h3ff;
      15: out3 <= 12'h3ff;
      16: out3 <= 12'h3ff;
      17: out3 <= 12'h3ff;
      18: out3 <= 12'h3fe;
      19: out3 <= 12'h3fe;
      20: out3 <= 12'h3fe;
      21: out3 <= 12'h3fe;
      22: out3 <= 12'h3fe;
      23: out3 <= 12'h3fd;
      24: out3 <= 12'h3fd;
      25: out3 <= 12'h3fd;
      26: out3 <= 12'h3fd;
      27: out3 <= 12'h3fc;
      28: out3 <= 12'h3fc;
      29: out3 <= 12'h3fc;
      30: out3 <= 12'h3fc;
      31: out3 <= 12'h3fb;
      32: out3 <= 12'h3fb;
      33: out3 <= 12'h3fb;
      34: out3 <= 12'h3fa;
      35: out3 <= 12'h3fa;
      36: out3 <= 12'h3fa;
      37: out3 <= 12'h3f9;
      38: out3 <= 12'h3f9;
      39: out3 <= 12'h3f9;
      40: out3 <= 12'h3f8;
      41: out3 <= 12'h3f8;
      42: out3 <= 12'h3f8;
      43: out3 <= 12'h3f7;
      44: out3 <= 12'h3f7;
      45: out3 <= 12'h3f6;
      46: out3 <= 12'h3f6;
      47: out3 <= 12'h3f5;
      48: out3 <= 12'h3f5;
      49: out3 <= 12'h3f4;
      50: out3 <= 12'h3f4;
      51: out3 <= 12'h3f3;
      52: out3 <= 12'h3f3;
      53: out3 <= 12'h3f2;
      54: out3 <= 12'h3f2;
      55: out3 <= 12'h3f1;
      56: out3 <= 12'h3f1;
      57: out3 <= 12'h3f0;
      58: out3 <= 12'h3f0;
      59: out3 <= 12'h3ef;
      60: out3 <= 12'h3ef;
      61: out3 <= 12'h3ee;
      62: out3 <= 12'h3ee;
      63: out3 <= 12'h3ed;
      64: out3 <= 12'h3ec;
      65: out3 <= 12'h3ec;
      66: out3 <= 12'h3eb;
      67: out3 <= 12'h3ea;
      68: out3 <= 12'h3ea;
      69: out3 <= 12'h3e9;
      70: out3 <= 12'h3e8;
      71: out3 <= 12'h3e8;
      72: out3 <= 12'h3e7;
      73: out3 <= 12'h3e6;
      74: out3 <= 12'h3e6;
      75: out3 <= 12'h3e5;
      76: out3 <= 12'h3e4;
      77: out3 <= 12'h3e4;
      78: out3 <= 12'h3e3;
      79: out3 <= 12'h3e2;
      80: out3 <= 12'h3e1;
      81: out3 <= 12'h3e1;
      82: out3 <= 12'h3e0;
      83: out3 <= 12'h3df;
      84: out3 <= 12'h3de;
      85: out3 <= 12'h3dd;
      86: out3 <= 12'h3dd;
      87: out3 <= 12'h3dc;
      88: out3 <= 12'h3db;
      89: out3 <= 12'h3da;
      90: out3 <= 12'h3d9;
      91: out3 <= 12'h3d8;
      92: out3 <= 12'h3d7;
      93: out3 <= 12'h3d7;
      94: out3 <= 12'h3d6;
      95: out3 <= 12'h3d5;
      96: out3 <= 12'h3d4;
      97: out3 <= 12'h3d3;
      98: out3 <= 12'h3d2;
      99: out3 <= 12'h3d1;
      100: out3 <= 12'h3d0;
      101: out3 <= 12'h3cf;
      102: out3 <= 12'h3ce;
      103: out3 <= 12'h3cd;
      104: out3 <= 12'h3cc;
      105: out3 <= 12'h3cb;
      106: out3 <= 12'h3ca;
      107: out3 <= 12'h3c9;
      108: out3 <= 12'h3c8;
      109: out3 <= 12'h3c7;
      110: out3 <= 12'h3c6;
      111: out3 <= 12'h3c5;
      112: out3 <= 12'h3c4;
      113: out3 <= 12'h3c3;
      114: out3 <= 12'h3c2;
      115: out3 <= 12'h3c1;
      116: out3 <= 12'h3c0;
      117: out3 <= 12'h3bf;
      118: out3 <= 12'h3be;
      119: out3 <= 12'h3bd;
      120: out3 <= 12'h3bb;
      121: out3 <= 12'h3ba;
      122: out3 <= 12'h3b9;
      123: out3 <= 12'h3b8;
      124: out3 <= 12'h3b7;
      125: out3 <= 12'h3b6;
      126: out3 <= 12'h3b4;
      127: out3 <= 12'h3b3;
      128: out3 <= 12'h3b2;
      129: out3 <= 12'h3b1;
      130: out3 <= 12'h3b0;
      131: out3 <= 12'h3ae;
      132: out3 <= 12'h3ad;
      133: out3 <= 12'h3ac;
      134: out3 <= 12'h3ab;
      135: out3 <= 12'h3a9;
      136: out3 <= 12'h3a8;
      137: out3 <= 12'h3a7;
      138: out3 <= 12'h3a6;
      139: out3 <= 12'h3a4;
      140: out3 <= 12'h3a3;
      141: out3 <= 12'h3a2;
      142: out3 <= 12'h3a0;
      143: out3 <= 12'h39f;
      144: out3 <= 12'h39e;
      145: out3 <= 12'h39c;
      146: out3 <= 12'h39b;
      147: out3 <= 12'h39a;
      148: out3 <= 12'h398;
      149: out3 <= 12'h397;
      150: out3 <= 12'h395;
      151: out3 <= 12'h394;
      152: out3 <= 12'h393;
      153: out3 <= 12'h391;
      154: out3 <= 12'h390;
      155: out3 <= 12'h38e;
      156: out3 <= 12'h38d;
      157: out3 <= 12'h38b;
      158: out3 <= 12'h38a;
      159: out3 <= 12'h389;
      160: out3 <= 12'h387;
      161: out3 <= 12'h386;
      162: out3 <= 12'h384;
      163: out3 <= 12'h383;
      164: out3 <= 12'h381;
      165: out3 <= 12'h380;
      166: out3 <= 12'h37e;
      167: out3 <= 12'h37d;
      168: out3 <= 12'h37b;
      169: out3 <= 12'h379;
      170: out3 <= 12'h378;
      171: out3 <= 12'h376;
      172: out3 <= 12'h375;
      173: out3 <= 12'h373;
      174: out3 <= 12'h372;
      175: out3 <= 12'h370;
      176: out3 <= 12'h36e;
      177: out3 <= 12'h36d;
      178: out3 <= 12'h36b;
      179: out3 <= 12'h369;
      180: out3 <= 12'h368;
      181: out3 <= 12'h366;
      182: out3 <= 12'h364;
      183: out3 <= 12'h363;
      184: out3 <= 12'h361;
      185: out3 <= 12'h35f;
      186: out3 <= 12'h35e;
      187: out3 <= 12'h35c;
      188: out3 <= 12'h35a;
      189: out3 <= 12'h359;
      190: out3 <= 12'h357;
      191: out3 <= 12'h355;
      192: out3 <= 12'h353;
      193: out3 <= 12'h352;
      194: out3 <= 12'h350;
      195: out3 <= 12'h34e;
      196: out3 <= 12'h34c;
      197: out3 <= 12'h34b;
      198: out3 <= 12'h349;
      199: out3 <= 12'h347;
      200: out3 <= 12'h345;
      201: out3 <= 12'h343;
      202: out3 <= 12'h342;
      203: out3 <= 12'h340;
      204: out3 <= 12'h33e;
      205: out3 <= 12'h33c;
      206: out3 <= 12'h33a;
      207: out3 <= 12'h338;
      208: out3 <= 12'h336;
      209: out3 <= 12'h335;
      210: out3 <= 12'h333;
      211: out3 <= 12'h331;
      212: out3 <= 12'h32f;
      213: out3 <= 12'h32d;
      214: out3 <= 12'h32b;
      215: out3 <= 12'h329;
      216: out3 <= 12'h327;
      217: out3 <= 12'h325;
      218: out3 <= 12'h323;
      219: out3 <= 12'h321;
      220: out3 <= 12'h31f;
      221: out3 <= 12'h31e;
      222: out3 <= 12'h31c;
      223: out3 <= 12'h31a;
      224: out3 <= 12'h318;
      225: out3 <= 12'h316;
      226: out3 <= 12'h314;
      227: out3 <= 12'h312;
      228: out3 <= 12'h310;
      229: out3 <= 12'h30e;
      230: out3 <= 12'h30b;
      231: out3 <= 12'h309;
      232: out3 <= 12'h307;
      233: out3 <= 12'h305;
      234: out3 <= 12'h303;
      235: out3 <= 12'h301;
      236: out3 <= 12'h2ff;
      237: out3 <= 12'h2fd;
      238: out3 <= 12'h2fb;
      239: out3 <= 12'h2f9;
      240: out3 <= 12'h2f7;
      241: out3 <= 12'h2f5;
      242: out3 <= 12'h2f3;
      243: out3 <= 12'h2f0;
      244: out3 <= 12'h2ee;
      245: out3 <= 12'h2ec;
      246: out3 <= 12'h2ea;
      247: out3 <= 12'h2e8;
      248: out3 <= 12'h2e6;
      249: out3 <= 12'h2e3;
      250: out3 <= 12'h2e1;
      251: out3 <= 12'h2df;
      252: out3 <= 12'h2dd;
      253: out3 <= 12'h2db;
      254: out3 <= 12'h2d9;
      255: out3 <= 12'h2d6;
      256: out3 <= 12'h2d4;
      257: out3 <= 12'h2d2;
      258: out3 <= 12'h2d0;
      259: out3 <= 12'h2cd;
      260: out3 <= 12'h2cb;
      261: out3 <= 12'h2c9;
      262: out3 <= 12'h2c7;
      263: out3 <= 12'h2c4;
      264: out3 <= 12'h2c2;
      265: out3 <= 12'h2c0;
      266: out3 <= 12'h2be;
      267: out3 <= 12'h2bb;
      268: out3 <= 12'h2b9;
      269: out3 <= 12'h2b7;
      270: out3 <= 12'h2b4;
      271: out3 <= 12'h2b2;
      272: out3 <= 12'h2b0;
      273: out3 <= 12'h2ad;
      274: out3 <= 12'h2ab;
      275: out3 <= 12'h2a9;
      276: out3 <= 12'h2a6;
      277: out3 <= 12'h2a4;
      278: out3 <= 12'h2a2;
      279: out3 <= 12'h29f;
      280: out3 <= 12'h29d;
      281: out3 <= 12'h29a;
      282: out3 <= 12'h298;
      283: out3 <= 12'h296;
      284: out3 <= 12'h293;
      285: out3 <= 12'h291;
      286: out3 <= 12'h28e;
      287: out3 <= 12'h28c;
      288: out3 <= 12'h28a;
      289: out3 <= 12'h287;
      290: out3 <= 12'h285;
      291: out3 <= 12'h282;
      292: out3 <= 12'h280;
      293: out3 <= 12'h27d;
      294: out3 <= 12'h27b;
      295: out3 <= 12'h278;
      296: out3 <= 12'h276;
      297: out3 <= 12'h274;
      298: out3 <= 12'h271;
      299: out3 <= 12'h26f;
      300: out3 <= 12'h26c;
      301: out3 <= 12'h26a;
      302: out3 <= 12'h267;
      303: out3 <= 12'h265;
      304: out3 <= 12'h262;
      305: out3 <= 12'h25f;
      306: out3 <= 12'h25d;
      307: out3 <= 12'h25a;
      308: out3 <= 12'h258;
      309: out3 <= 12'h255;
      310: out3 <= 12'h253;
      311: out3 <= 12'h250;
      312: out3 <= 12'h24e;
      313: out3 <= 12'h24b;
      314: out3 <= 12'h248;
      315: out3 <= 12'h246;
      316: out3 <= 12'h243;
      317: out3 <= 12'h241;
      318: out3 <= 12'h23e;
      319: out3 <= 12'h23c;
      320: out3 <= 12'h239;
      321: out3 <= 12'h236;
      322: out3 <= 12'h234;
      323: out3 <= 12'h231;
      324: out3 <= 12'h22e;
      325: out3 <= 12'h22c;
      326: out3 <= 12'h229;
      327: out3 <= 12'h226;
      328: out3 <= 12'h224;
      329: out3 <= 12'h221;
      330: out3 <= 12'h21f;
      331: out3 <= 12'h21c;
      332: out3 <= 12'h219;
      333: out3 <= 12'h217;
      334: out3 <= 12'h214;
      335: out3 <= 12'h211;
      336: out3 <= 12'h20e;
      337: out3 <= 12'h20c;
      338: out3 <= 12'h209;
      339: out3 <= 12'h206;
      340: out3 <= 12'h204;
      341: out3 <= 12'h201;
      342: out3 <= 12'h1fe;
      343: out3 <= 12'h1fb;
      344: out3 <= 12'h1f9;
      345: out3 <= 12'h1f6;
      346: out3 <= 12'h1f3;
      347: out3 <= 12'h1f1;
      348: out3 <= 12'h1ee;
      349: out3 <= 12'h1eb;
      350: out3 <= 12'h1e8;
      351: out3 <= 12'h1e5;
      352: out3 <= 12'h1e3;
      353: out3 <= 12'h1e0;
      354: out3 <= 12'h1dd;
      355: out3 <= 12'h1da;
      356: out3 <= 12'h1d8;
      357: out3 <= 12'h1d5;
      358: out3 <= 12'h1d2;
      359: out3 <= 12'h1cf;
      360: out3 <= 12'h1cc;
      361: out3 <= 12'h1ca;
      362: out3 <= 12'h1c7;
      363: out3 <= 12'h1c4;
      364: out3 <= 12'h1c1;
      365: out3 <= 12'h1be;
      366: out3 <= 12'h1bb;
      367: out3 <= 12'h1b9;
      368: out3 <= 12'h1b6;
      369: out3 <= 12'h1b3;
      370: out3 <= 12'h1b0;
      371: out3 <= 12'h1ad;
      372: out3 <= 12'h1aa;
      373: out3 <= 12'h1a8;
      374: out3 <= 12'h1a5;
      375: out3 <= 12'h1a2;
      376: out3 <= 12'h19f;
      377: out3 <= 12'h19c;
      378: out3 <= 12'h199;
      379: out3 <= 12'h196;
      380: out3 <= 12'h193;
      381: out3 <= 12'h191;
      382: out3 <= 12'h18e;
      383: out3 <= 12'h18b;
      384: out3 <= 12'h188;
      385: out3 <= 12'h185;
      386: out3 <= 12'h182;
      387: out3 <= 12'h17f;
      388: out3 <= 12'h17c;
      389: out3 <= 12'h179;
      390: out3 <= 12'h176;
      391: out3 <= 12'h173;
      392: out3 <= 12'h171;
      393: out3 <= 12'h16e;
      394: out3 <= 12'h16b;
      395: out3 <= 12'h168;
      396: out3 <= 12'h165;
      397: out3 <= 12'h162;
      398: out3 <= 12'h15f;
      399: out3 <= 12'h15c;
      400: out3 <= 12'h159;
      401: out3 <= 12'h156;
      402: out3 <= 12'h153;
      403: out3 <= 12'h150;
      404: out3 <= 12'h14d;
      405: out3 <= 12'h14a;
      406: out3 <= 12'h147;
      407: out3 <= 12'h144;
      408: out3 <= 12'h141;
      409: out3 <= 12'h13e;
      410: out3 <= 12'h13b;
      411: out3 <= 12'h138;
      412: out3 <= 12'h135;
      413: out3 <= 12'h132;
      414: out3 <= 12'h12f;
      415: out3 <= 12'h12c;
      416: out3 <= 12'h129;
      417: out3 <= 12'h126;
      418: out3 <= 12'h123;
      419: out3 <= 12'h120;
      420: out3 <= 12'h11d;
      421: out3 <= 12'h11a;
      422: out3 <= 12'h117;
      423: out3 <= 12'h114;
      424: out3 <= 12'h111;
      425: out3 <= 12'h10e;
      426: out3 <= 12'h10b;
      427: out3 <= 12'h108;
      428: out3 <= 12'h105;
      429: out3 <= 12'h102;
      430: out3 <= 12'hff;
      431: out3 <= 12'hfc;
      432: out3 <= 12'hf9;
      433: out3 <= 12'hf6;
      434: out3 <= 12'hf3;
      435: out3 <= 12'hf0;
      436: out3 <= 12'hed;
      437: out3 <= 12'hea;
      438: out3 <= 12'he6;
      439: out3 <= 12'he3;
      440: out3 <= 12'he0;
      441: out3 <= 12'hdd;
      442: out3 <= 12'hda;
      443: out3 <= 12'hd7;
      444: out3 <= 12'hd4;
      445: out3 <= 12'hd1;
      446: out3 <= 12'hce;
      447: out3 <= 12'hcb;
      448: out3 <= 12'hc8;
      449: out3 <= 12'hc5;
      450: out3 <= 12'hc2;
      451: out3 <= 12'hbf;
      452: out3 <= 12'hbb;
      453: out3 <= 12'hb8;
      454: out3 <= 12'hb5;
      455: out3 <= 12'hb2;
      456: out3 <= 12'haf;
      457: out3 <= 12'hac;
      458: out3 <= 12'ha9;
      459: out3 <= 12'ha6;
      460: out3 <= 12'ha3;
      461: out3 <= 12'ha0;
      462: out3 <= 12'h9c;
      463: out3 <= 12'h99;
      464: out3 <= 12'h96;
      465: out3 <= 12'h93;
      466: out3 <= 12'h90;
      467: out3 <= 12'h8d;
      468: out3 <= 12'h8a;
      469: out3 <= 12'h87;
      470: out3 <= 12'h84;
      471: out3 <= 12'h80;
      472: out3 <= 12'h7d;
      473: out3 <= 12'h7a;
      474: out3 <= 12'h77;
      475: out3 <= 12'h74;
      476: out3 <= 12'h71;
      477: out3 <= 12'h6e;
      478: out3 <= 12'h6b;
      479: out3 <= 12'h67;
      480: out3 <= 12'h64;
      481: out3 <= 12'h61;
      482: out3 <= 12'h5e;
      483: out3 <= 12'h5b;
      484: out3 <= 12'h58;
      485: out3 <= 12'h55;
      486: out3 <= 12'h52;
      487: out3 <= 12'h4e;
      488: out3 <= 12'h4b;
      489: out3 <= 12'h48;
      490: out3 <= 12'h45;
      491: out3 <= 12'h42;
      492: out3 <= 12'h3f;
      493: out3 <= 12'h3c;
      494: out3 <= 12'h39;
      495: out3 <= 12'h35;
      496: out3 <= 12'h32;
      497: out3 <= 12'h2f;
      498: out3 <= 12'h2c;
      499: out3 <= 12'h29;
      500: out3 <= 12'h26;
      501: out3 <= 12'h23;
      502: out3 <= 12'h1f;
      503: out3 <= 12'h1c;
      504: out3 <= 12'h19;
      505: out3 <= 12'h16;
      506: out3 <= 12'h13;
      507: out3 <= 12'h10;
      508: out3 <= 12'hd;
      509: out3 <= 12'h9;
      510: out3 <= 12'h6;
      511: out3 <= 12'h3;
      512: out3 <= 12'h0;
      513: out3 <= 12'hffd;
      514: out3 <= 12'hffa;
      515: out3 <= 12'hff7;
      516: out3 <= 12'hff3;
      517: out3 <= 12'hff0;
      518: out3 <= 12'hfed;
      519: out3 <= 12'hfea;
      520: out3 <= 12'hfe7;
      521: out3 <= 12'hfe4;
      522: out3 <= 12'hfe1;
      523: out3 <= 12'hfdd;
      524: out3 <= 12'hfda;
      525: out3 <= 12'hfd7;
      526: out3 <= 12'hfd4;
      527: out3 <= 12'hfd1;
      528: out3 <= 12'hfce;
      529: out3 <= 12'hfcb;
      530: out3 <= 12'hfc7;
      531: out3 <= 12'hfc4;
      532: out3 <= 12'hfc1;
      533: out3 <= 12'hfbe;
      534: out3 <= 12'hfbb;
      535: out3 <= 12'hfb8;
      536: out3 <= 12'hfb5;
      537: out3 <= 12'hfb2;
      538: out3 <= 12'hfae;
      539: out3 <= 12'hfab;
      540: out3 <= 12'hfa8;
      541: out3 <= 12'hfa5;
      542: out3 <= 12'hfa2;
      543: out3 <= 12'hf9f;
      544: out3 <= 12'hf9c;
      545: out3 <= 12'hf99;
      546: out3 <= 12'hf95;
      547: out3 <= 12'hf92;
      548: out3 <= 12'hf8f;
      549: out3 <= 12'hf8c;
      550: out3 <= 12'hf89;
      551: out3 <= 12'hf86;
      552: out3 <= 12'hf83;
      553: out3 <= 12'hf80;
      554: out3 <= 12'hf7c;
      555: out3 <= 12'hf79;
      556: out3 <= 12'hf76;
      557: out3 <= 12'hf73;
      558: out3 <= 12'hf70;
      559: out3 <= 12'hf6d;
      560: out3 <= 12'hf6a;
      561: out3 <= 12'hf67;
      562: out3 <= 12'hf64;
      563: out3 <= 12'hf60;
      564: out3 <= 12'hf5d;
      565: out3 <= 12'hf5a;
      566: out3 <= 12'hf57;
      567: out3 <= 12'hf54;
      568: out3 <= 12'hf51;
      569: out3 <= 12'hf4e;
      570: out3 <= 12'hf4b;
      571: out3 <= 12'hf48;
      572: out3 <= 12'hf45;
      573: out3 <= 12'hf41;
      574: out3 <= 12'hf3e;
      575: out3 <= 12'hf3b;
      576: out3 <= 12'hf38;
      577: out3 <= 12'hf35;
      578: out3 <= 12'hf32;
      579: out3 <= 12'hf2f;
      580: out3 <= 12'hf2c;
      581: out3 <= 12'hf29;
      582: out3 <= 12'hf26;
      583: out3 <= 12'hf23;
      584: out3 <= 12'hf20;
      585: out3 <= 12'hf1d;
      586: out3 <= 12'hf1a;
      587: out3 <= 12'hf16;
      588: out3 <= 12'hf13;
      589: out3 <= 12'hf10;
      590: out3 <= 12'hf0d;
      591: out3 <= 12'hf0a;
      592: out3 <= 12'hf07;
      593: out3 <= 12'hf04;
      594: out3 <= 12'hf01;
      595: out3 <= 12'hefe;
      596: out3 <= 12'hefb;
      597: out3 <= 12'hef8;
      598: out3 <= 12'hef5;
      599: out3 <= 12'hef2;
      600: out3 <= 12'heef;
      601: out3 <= 12'heec;
      602: out3 <= 12'hee9;
      603: out3 <= 12'hee6;
      604: out3 <= 12'hee3;
      605: out3 <= 12'hee0;
      606: out3 <= 12'hedd;
      607: out3 <= 12'heda;
      608: out3 <= 12'hed7;
      609: out3 <= 12'hed4;
      610: out3 <= 12'hed1;
      611: out3 <= 12'hece;
      612: out3 <= 12'hecb;
      613: out3 <= 12'hec8;
      614: out3 <= 12'hec5;
      615: out3 <= 12'hec2;
      616: out3 <= 12'hebf;
      617: out3 <= 12'hebc;
      618: out3 <= 12'heb9;
      619: out3 <= 12'heb6;
      620: out3 <= 12'heb3;
      621: out3 <= 12'heb0;
      622: out3 <= 12'head;
      623: out3 <= 12'heaa;
      624: out3 <= 12'hea7;
      625: out3 <= 12'hea4;
      626: out3 <= 12'hea1;
      627: out3 <= 12'he9e;
      628: out3 <= 12'he9b;
      629: out3 <= 12'he98;
      630: out3 <= 12'he95;
      631: out3 <= 12'he92;
      632: out3 <= 12'he8f;
      633: out3 <= 12'he8d;
      634: out3 <= 12'he8a;
      635: out3 <= 12'he87;
      636: out3 <= 12'he84;
      637: out3 <= 12'he81;
      638: out3 <= 12'he7e;
      639: out3 <= 12'he7b;
      640: out3 <= 12'he78;
      641: out3 <= 12'he75;
      642: out3 <= 12'he72;
      643: out3 <= 12'he6f;
      644: out3 <= 12'he6d;
      645: out3 <= 12'he6a;
      646: out3 <= 12'he67;
      647: out3 <= 12'he64;
      648: out3 <= 12'he61;
      649: out3 <= 12'he5e;
      650: out3 <= 12'he5b;
      651: out3 <= 12'he58;
      652: out3 <= 12'he56;
      653: out3 <= 12'he53;
      654: out3 <= 12'he50;
      655: out3 <= 12'he4d;
      656: out3 <= 12'he4a;
      657: out3 <= 12'he47;
      658: out3 <= 12'he45;
      659: out3 <= 12'he42;
      660: out3 <= 12'he3f;
      661: out3 <= 12'he3c;
      662: out3 <= 12'he39;
      663: out3 <= 12'he36;
      664: out3 <= 12'he34;
      665: out3 <= 12'he31;
      666: out3 <= 12'he2e;
      667: out3 <= 12'he2b;
      668: out3 <= 12'he28;
      669: out3 <= 12'he26;
      670: out3 <= 12'he23;
      671: out3 <= 12'he20;
      672: out3 <= 12'he1d;
      673: out3 <= 12'he1b;
      674: out3 <= 12'he18;
      675: out3 <= 12'he15;
      676: out3 <= 12'he12;
      677: out3 <= 12'he0f;
      678: out3 <= 12'he0d;
      679: out3 <= 12'he0a;
      680: out3 <= 12'he07;
      681: out3 <= 12'he05;
      682: out3 <= 12'he02;
      683: out3 <= 12'hdff;
      684: out3 <= 12'hdfc;
      685: out3 <= 12'hdfa;
      686: out3 <= 12'hdf7;
      687: out3 <= 12'hdf4;
      688: out3 <= 12'hdf2;
      689: out3 <= 12'hdef;
      690: out3 <= 12'hdec;
      691: out3 <= 12'hde9;
      692: out3 <= 12'hde7;
      693: out3 <= 12'hde4;
      694: out3 <= 12'hde1;
      695: out3 <= 12'hddf;
      696: out3 <= 12'hddc;
      697: out3 <= 12'hdda;
      698: out3 <= 12'hdd7;
      699: out3 <= 12'hdd4;
      700: out3 <= 12'hdd2;
      701: out3 <= 12'hdcf;
      702: out3 <= 12'hdcc;
      703: out3 <= 12'hdca;
      704: out3 <= 12'hdc7;
      705: out3 <= 12'hdc4;
      706: out3 <= 12'hdc2;
      707: out3 <= 12'hdbf;
      708: out3 <= 12'hdbd;
      709: out3 <= 12'hdba;
      710: out3 <= 12'hdb8;
      711: out3 <= 12'hdb5;
      712: out3 <= 12'hdb2;
      713: out3 <= 12'hdb0;
      714: out3 <= 12'hdad;
      715: out3 <= 12'hdab;
      716: out3 <= 12'hda8;
      717: out3 <= 12'hda6;
      718: out3 <= 12'hda3;
      719: out3 <= 12'hda1;
      720: out3 <= 12'hd9e;
      721: out3 <= 12'hd9b;
      722: out3 <= 12'hd99;
      723: out3 <= 12'hd96;
      724: out3 <= 12'hd94;
      725: out3 <= 12'hd91;
      726: out3 <= 12'hd8f;
      727: out3 <= 12'hd8c;
      728: out3 <= 12'hd8a;
      729: out3 <= 12'hd88;
      730: out3 <= 12'hd85;
      731: out3 <= 12'hd83;
      732: out3 <= 12'hd80;
      733: out3 <= 12'hd7e;
      734: out3 <= 12'hd7b;
      735: out3 <= 12'hd79;
      736: out3 <= 12'hd76;
      737: out3 <= 12'hd74;
      738: out3 <= 12'hd72;
      739: out3 <= 12'hd6f;
      740: out3 <= 12'hd6d;
      741: out3 <= 12'hd6a;
      742: out3 <= 12'hd68;
      743: out3 <= 12'hd66;
      744: out3 <= 12'hd63;
      745: out3 <= 12'hd61;
      746: out3 <= 12'hd5e;
      747: out3 <= 12'hd5c;
      748: out3 <= 12'hd5a;
      749: out3 <= 12'hd57;
      750: out3 <= 12'hd55;
      751: out3 <= 12'hd53;
      752: out3 <= 12'hd50;
      753: out3 <= 12'hd4e;
      754: out3 <= 12'hd4c;
      755: out3 <= 12'hd49;
      756: out3 <= 12'hd47;
      757: out3 <= 12'hd45;
      758: out3 <= 12'hd42;
      759: out3 <= 12'hd40;
      760: out3 <= 12'hd3e;
      761: out3 <= 12'hd3c;
      762: out3 <= 12'hd39;
      763: out3 <= 12'hd37;
      764: out3 <= 12'hd35;
      765: out3 <= 12'hd33;
      766: out3 <= 12'hd30;
      767: out3 <= 12'hd2e;
      768: out3 <= 12'hd2c;
      769: out3 <= 12'hd2a;
      770: out3 <= 12'hd27;
      771: out3 <= 12'hd25;
      772: out3 <= 12'hd23;
      773: out3 <= 12'hd21;
      774: out3 <= 12'hd1f;
      775: out3 <= 12'hd1d;
      776: out3 <= 12'hd1a;
      777: out3 <= 12'hd18;
      778: out3 <= 12'hd16;
      779: out3 <= 12'hd14;
      780: out3 <= 12'hd12;
      781: out3 <= 12'hd10;
      782: out3 <= 12'hd0d;
      783: out3 <= 12'hd0b;
      784: out3 <= 12'hd09;
      785: out3 <= 12'hd07;
      786: out3 <= 12'hd05;
      787: out3 <= 12'hd03;
      788: out3 <= 12'hd01;
      789: out3 <= 12'hcff;
      790: out3 <= 12'hcfd;
      791: out3 <= 12'hcfb;
      792: out3 <= 12'hcf9;
      793: out3 <= 12'hcf7;
      794: out3 <= 12'hcf5;
      795: out3 <= 12'hcf2;
      796: out3 <= 12'hcf0;
      797: out3 <= 12'hcee;
      798: out3 <= 12'hcec;
      799: out3 <= 12'hcea;
      800: out3 <= 12'hce8;
      801: out3 <= 12'hce6;
      802: out3 <= 12'hce4;
      803: out3 <= 12'hce2;
      804: out3 <= 12'hce1;
      805: out3 <= 12'hcdf;
      806: out3 <= 12'hcdd;
      807: out3 <= 12'hcdb;
      808: out3 <= 12'hcd9;
      809: out3 <= 12'hcd7;
      810: out3 <= 12'hcd5;
      811: out3 <= 12'hcd3;
      812: out3 <= 12'hcd1;
      813: out3 <= 12'hccf;
      814: out3 <= 12'hccd;
      815: out3 <= 12'hccb;
      816: out3 <= 12'hcca;
      817: out3 <= 12'hcc8;
      818: out3 <= 12'hcc6;
      819: out3 <= 12'hcc4;
      820: out3 <= 12'hcc2;
      821: out3 <= 12'hcc0;
      822: out3 <= 12'hcbe;
      823: out3 <= 12'hcbd;
      824: out3 <= 12'hcbb;
      825: out3 <= 12'hcb9;
      826: out3 <= 12'hcb7;
      827: out3 <= 12'hcb5;
      828: out3 <= 12'hcb4;
      829: out3 <= 12'hcb2;
      830: out3 <= 12'hcb0;
      831: out3 <= 12'hcae;
      832: out3 <= 12'hcad;
      833: out3 <= 12'hcab;
      834: out3 <= 12'hca9;
      835: out3 <= 12'hca7;
      836: out3 <= 12'hca6;
      837: out3 <= 12'hca4;
      838: out3 <= 12'hca2;
      839: out3 <= 12'hca1;
      840: out3 <= 12'hc9f;
      841: out3 <= 12'hc9d;
      842: out3 <= 12'hc9c;
      843: out3 <= 12'hc9a;
      844: out3 <= 12'hc98;
      845: out3 <= 12'hc97;
      846: out3 <= 12'hc95;
      847: out3 <= 12'hc93;
      848: out3 <= 12'hc92;
      849: out3 <= 12'hc90;
      850: out3 <= 12'hc8e;
      851: out3 <= 12'hc8d;
      852: out3 <= 12'hc8b;
      853: out3 <= 12'hc8a;
      854: out3 <= 12'hc88;
      855: out3 <= 12'hc87;
      856: out3 <= 12'hc85;
      857: out3 <= 12'hc83;
      858: out3 <= 12'hc82;
      859: out3 <= 12'hc80;
      860: out3 <= 12'hc7f;
      861: out3 <= 12'hc7d;
      862: out3 <= 12'hc7c;
      863: out3 <= 12'hc7a;
      864: out3 <= 12'hc79;
      865: out3 <= 12'hc77;
      866: out3 <= 12'hc76;
      867: out3 <= 12'hc75;
      868: out3 <= 12'hc73;
      869: out3 <= 12'hc72;
      870: out3 <= 12'hc70;
      871: out3 <= 12'hc6f;
      872: out3 <= 12'hc6d;
      873: out3 <= 12'hc6c;
      874: out3 <= 12'hc6b;
      875: out3 <= 12'hc69;
      876: out3 <= 12'hc68;
      877: out3 <= 12'hc66;
      878: out3 <= 12'hc65;
      879: out3 <= 12'hc64;
      880: out3 <= 12'hc62;
      881: out3 <= 12'hc61;
      882: out3 <= 12'hc60;
      883: out3 <= 12'hc5e;
      884: out3 <= 12'hc5d;
      885: out3 <= 12'hc5c;
      886: out3 <= 12'hc5a;
      887: out3 <= 12'hc59;
      888: out3 <= 12'hc58;
      889: out3 <= 12'hc57;
      890: out3 <= 12'hc55;
      891: out3 <= 12'hc54;
      892: out3 <= 12'hc53;
      893: out3 <= 12'hc52;
      894: out3 <= 12'hc50;
      895: out3 <= 12'hc4f;
      896: out3 <= 12'hc4e;
      897: out3 <= 12'hc4d;
      898: out3 <= 12'hc4c;
      899: out3 <= 12'hc4a;
      900: out3 <= 12'hc49;
      901: out3 <= 12'hc48;
      902: out3 <= 12'hc47;
      903: out3 <= 12'hc46;
      904: out3 <= 12'hc45;
      905: out3 <= 12'hc43;
      906: out3 <= 12'hc42;
      907: out3 <= 12'hc41;
      908: out3 <= 12'hc40;
      909: out3 <= 12'hc3f;
      910: out3 <= 12'hc3e;
      911: out3 <= 12'hc3d;
      912: out3 <= 12'hc3c;
      913: out3 <= 12'hc3b;
      914: out3 <= 12'hc3a;
      915: out3 <= 12'hc39;
      916: out3 <= 12'hc38;
      917: out3 <= 12'hc37;
      918: out3 <= 12'hc36;
      919: out3 <= 12'hc35;
      920: out3 <= 12'hc34;
      921: out3 <= 12'hc33;
      922: out3 <= 12'hc32;
      923: out3 <= 12'hc31;
      924: out3 <= 12'hc30;
      925: out3 <= 12'hc2f;
      926: out3 <= 12'hc2e;
      927: out3 <= 12'hc2d;
      928: out3 <= 12'hc2c;
      929: out3 <= 12'hc2b;
      930: out3 <= 12'hc2a;
      931: out3 <= 12'hc29;
      932: out3 <= 12'hc29;
      933: out3 <= 12'hc28;
      934: out3 <= 12'hc27;
      935: out3 <= 12'hc26;
      936: out3 <= 12'hc25;
      937: out3 <= 12'hc24;
      938: out3 <= 12'hc23;
      939: out3 <= 12'hc23;
      940: out3 <= 12'hc22;
      941: out3 <= 12'hc21;
      942: out3 <= 12'hc20;
      943: out3 <= 12'hc1f;
      944: out3 <= 12'hc1f;
      945: out3 <= 12'hc1e;
      946: out3 <= 12'hc1d;
      947: out3 <= 12'hc1c;
      948: out3 <= 12'hc1c;
      949: out3 <= 12'hc1b;
      950: out3 <= 12'hc1a;
      951: out3 <= 12'hc1a;
      952: out3 <= 12'hc19;
      953: out3 <= 12'hc18;
      954: out3 <= 12'hc18;
      955: out3 <= 12'hc17;
      956: out3 <= 12'hc16;
      957: out3 <= 12'hc16;
      958: out3 <= 12'hc15;
      959: out3 <= 12'hc14;
      960: out3 <= 12'hc14;
      961: out3 <= 12'hc13;
      962: out3 <= 12'hc12;
      963: out3 <= 12'hc12;
      964: out3 <= 12'hc11;
      965: out3 <= 12'hc11;
      966: out3 <= 12'hc10;
      967: out3 <= 12'hc10;
      968: out3 <= 12'hc0f;
      969: out3 <= 12'hc0f;
      970: out3 <= 12'hc0e;
      971: out3 <= 12'hc0e;
      972: out3 <= 12'hc0d;
      973: out3 <= 12'hc0d;
      974: out3 <= 12'hc0c;
      975: out3 <= 12'hc0c;
      976: out3 <= 12'hc0b;
      977: out3 <= 12'hc0b;
      978: out3 <= 12'hc0a;
      979: out3 <= 12'hc0a;
      980: out3 <= 12'hc09;
      981: out3 <= 12'hc09;
      982: out3 <= 12'hc08;
      983: out3 <= 12'hc08;
      984: out3 <= 12'hc08;
      985: out3 <= 12'hc07;
      986: out3 <= 12'hc07;
      987: out3 <= 12'hc07;
      988: out3 <= 12'hc06;
      989: out3 <= 12'hc06;
      990: out3 <= 12'hc06;
      991: out3 <= 12'hc05;
      992: out3 <= 12'hc05;
      993: out3 <= 12'hc05;
      994: out3 <= 12'hc04;
      995: out3 <= 12'hc04;
      996: out3 <= 12'hc04;
      997: out3 <= 12'hc04;
      998: out3 <= 12'hc03;
      999: out3 <= 12'hc03;
      1000: out3 <= 12'hc03;
      1001: out3 <= 12'hc03;
      1002: out3 <= 12'hc02;
      1003: out3 <= 12'hc02;
      1004: out3 <= 12'hc02;
      1005: out3 <= 12'hc02;
      1006: out3 <= 12'hc02;
      1007: out3 <= 12'hc01;
      1008: out3 <= 12'hc01;
      1009: out3 <= 12'hc01;
      1010: out3 <= 12'hc01;
      1011: out3 <= 12'hc01;
      1012: out3 <= 12'hc01;
      1013: out3 <= 12'hc01;
      1014: out3 <= 12'hc00;
      1015: out3 <= 12'hc00;
      1016: out3 <= 12'hc00;
      1017: out3 <= 12'hc00;
      1018: out3 <= 12'hc00;
      1019: out3 <= 12'hc00;
      1020: out3 <= 12'hc00;
      1021: out3 <= 12'hc00;
      1022: out3 <= 12'hc00;
      1023: out3 <= 12'hc00;
      1024: out3 <= 12'h400;
      1025: out3 <= 12'h400;
      1026: out3 <= 12'h400;
      1027: out3 <= 12'h400;
      1028: out3 <= 12'h400;
      1029: out3 <= 12'h400;
      1030: out3 <= 12'h3ff;
      1031: out3 <= 12'h3ff;
      1032: out3 <= 12'h3ff;
      1033: out3 <= 12'h3fe;
      1034: out3 <= 12'h3fe;
      1035: out3 <= 12'h3fe;
      1036: out3 <= 12'h3fd;
      1037: out3 <= 12'h3fd;
      1038: out3 <= 12'h3fc;
      1039: out3 <= 12'h3fc;
      1040: out3 <= 12'h3fb;
      1041: out3 <= 12'h3fa;
      1042: out3 <= 12'h3fa;
      1043: out3 <= 12'h3f9;
      1044: out3 <= 12'h3f8;
      1045: out3 <= 12'h3f8;
      1046: out3 <= 12'h3f7;
      1047: out3 <= 12'h3f6;
      1048: out3 <= 12'h3f5;
      1049: out3 <= 12'h3f4;
      1050: out3 <= 12'h3f3;
      1051: out3 <= 12'h3f2;
      1052: out3 <= 12'h3f1;
      1053: out3 <= 12'h3f0;
      1054: out3 <= 12'h3ef;
      1055: out3 <= 12'h3ee;
      1056: out3 <= 12'h3ec;
      1057: out3 <= 12'h3eb;
      1058: out3 <= 12'h3ea;
      1059: out3 <= 12'h3e8;
      1060: out3 <= 12'h3e7;
      1061: out3 <= 12'h3e6;
      1062: out3 <= 12'h3e4;
      1063: out3 <= 12'h3e3;
      1064: out3 <= 12'h3e1;
      1065: out3 <= 12'h3e0;
      1066: out3 <= 12'h3de;
      1067: out3 <= 12'h3dd;
      1068: out3 <= 12'h3db;
      1069: out3 <= 12'h3d9;
      1070: out3 <= 12'h3d7;
      1071: out3 <= 12'h3d6;
      1072: out3 <= 12'h3d4;
      1073: out3 <= 12'h3d2;
      1074: out3 <= 12'h3d0;
      1075: out3 <= 12'h3ce;
      1076: out3 <= 12'h3cc;
      1077: out3 <= 12'h3ca;
      1078: out3 <= 12'h3c8;
      1079: out3 <= 12'h3c6;
      1080: out3 <= 12'h3c4;
      1081: out3 <= 12'h3c2;
      1082: out3 <= 12'h3c0;
      1083: out3 <= 12'h3be;
      1084: out3 <= 12'h3bb;
      1085: out3 <= 12'h3b9;
      1086: out3 <= 12'h3b7;
      1087: out3 <= 12'h3b4;
      1088: out3 <= 12'h3b2;
      1089: out3 <= 12'h3b0;
      1090: out3 <= 12'h3ad;
      1091: out3 <= 12'h3ab;
      1092: out3 <= 12'h3a8;
      1093: out3 <= 12'h3a6;
      1094: out3 <= 12'h3a3;
      1095: out3 <= 12'h3a0;
      1096: out3 <= 12'h39e;
      1097: out3 <= 12'h39b;
      1098: out3 <= 12'h398;
      1099: out3 <= 12'h395;
      1100: out3 <= 12'h393;
      1101: out3 <= 12'h390;
      1102: out3 <= 12'h38d;
      1103: out3 <= 12'h38a;
      1104: out3 <= 12'h387;
      1105: out3 <= 12'h384;
      1106: out3 <= 12'h381;
      1107: out3 <= 12'h37e;
      1108: out3 <= 12'h37b;
      1109: out3 <= 12'h378;
      1110: out3 <= 12'h375;
      1111: out3 <= 12'h372;
      1112: out3 <= 12'h36e;
      1113: out3 <= 12'h36b;
      1114: out3 <= 12'h368;
      1115: out3 <= 12'h364;
      1116: out3 <= 12'h361;
      1117: out3 <= 12'h35e;
      1118: out3 <= 12'h35a;
      1119: out3 <= 12'h357;
      1120: out3 <= 12'h353;
      1121: out3 <= 12'h350;
      1122: out3 <= 12'h34c;
      1123: out3 <= 12'h349;
      1124: out3 <= 12'h345;
      1125: out3 <= 12'h342;
      1126: out3 <= 12'h33e;
      1127: out3 <= 12'h33a;
      1128: out3 <= 12'h336;
      1129: out3 <= 12'h333;
      1130: out3 <= 12'h32f;
      1131: out3 <= 12'h32b;
      1132: out3 <= 12'h327;
      1133: out3 <= 12'h323;
      1134: out3 <= 12'h31f;
      1135: out3 <= 12'h31c;
      1136: out3 <= 12'h318;
      1137: out3 <= 12'h314;
      1138: out3 <= 12'h310;
      1139: out3 <= 12'h30b;
      1140: out3 <= 12'h307;
      1141: out3 <= 12'h303;
      1142: out3 <= 12'h2ff;
      1143: out3 <= 12'h2fb;
      1144: out3 <= 12'h2f7;
      1145: out3 <= 12'h2f3;
      1146: out3 <= 12'h2ee;
      1147: out3 <= 12'h2ea;
      1148: out3 <= 12'h2e6;
      1149: out3 <= 12'h2e1;
      1150: out3 <= 12'h2dd;
      1151: out3 <= 12'h2d9;
      1152: out3 <= 12'h2d4;
      1153: out3 <= 12'h2d0;
      1154: out3 <= 12'h2cb;
      1155: out3 <= 12'h2c7;
      1156: out3 <= 12'h2c2;
      1157: out3 <= 12'h2be;
      1158: out3 <= 12'h2b9;
      1159: out3 <= 12'h2b4;
      1160: out3 <= 12'h2b0;
      1161: out3 <= 12'h2ab;
      1162: out3 <= 12'h2a6;
      1163: out3 <= 12'h2a2;
      1164: out3 <= 12'h29d;
      1165: out3 <= 12'h298;
      1166: out3 <= 12'h293;
      1167: out3 <= 12'h28e;
      1168: out3 <= 12'h28a;
      1169: out3 <= 12'h285;
      1170: out3 <= 12'h280;
      1171: out3 <= 12'h27b;
      1172: out3 <= 12'h276;
      1173: out3 <= 12'h271;
      1174: out3 <= 12'h26c;
      1175: out3 <= 12'h267;
      1176: out3 <= 12'h262;
      1177: out3 <= 12'h25d;
      1178: out3 <= 12'h258;
      1179: out3 <= 12'h253;
      1180: out3 <= 12'h24e;
      1181: out3 <= 12'h248;
      1182: out3 <= 12'h243;
      1183: out3 <= 12'h23e;
      1184: out3 <= 12'h239;
      1185: out3 <= 12'h234;
      1186: out3 <= 12'h22e;
      1187: out3 <= 12'h229;
      1188: out3 <= 12'h224;
      1189: out3 <= 12'h21f;
      1190: out3 <= 12'h219;
      1191: out3 <= 12'h214;
      1192: out3 <= 12'h20e;
      1193: out3 <= 12'h209;
      1194: out3 <= 12'h204;
      1195: out3 <= 12'h1fe;
      1196: out3 <= 12'h1f9;
      1197: out3 <= 12'h1f3;
      1198: out3 <= 12'h1ee;
      1199: out3 <= 12'h1e8;
      1200: out3 <= 12'h1e3;
      1201: out3 <= 12'h1dd;
      1202: out3 <= 12'h1d8;
      1203: out3 <= 12'h1d2;
      1204: out3 <= 12'h1cc;
      1205: out3 <= 12'h1c7;
      1206: out3 <= 12'h1c1;
      1207: out3 <= 12'h1bb;
      1208: out3 <= 12'h1b6;
      1209: out3 <= 12'h1b0;
      1210: out3 <= 12'h1aa;
      1211: out3 <= 12'h1a5;
      1212: out3 <= 12'h19f;
      1213: out3 <= 12'h199;
      1214: out3 <= 12'h193;
      1215: out3 <= 12'h18e;
      1216: out3 <= 12'h188;
      1217: out3 <= 12'h182;
      1218: out3 <= 12'h17c;
      1219: out3 <= 12'h176;
      1220: out3 <= 12'h171;
      1221: out3 <= 12'h16b;
      1222: out3 <= 12'h165;
      1223: out3 <= 12'h15f;
      1224: out3 <= 12'h159;
      1225: out3 <= 12'h153;
      1226: out3 <= 12'h14d;
      1227: out3 <= 12'h147;
      1228: out3 <= 12'h141;
      1229: out3 <= 12'h13b;
      1230: out3 <= 12'h135;
      1231: out3 <= 12'h12f;
      1232: out3 <= 12'h129;
      1233: out3 <= 12'h123;
      1234: out3 <= 12'h11d;
      1235: out3 <= 12'h117;
      1236: out3 <= 12'h111;
      1237: out3 <= 12'h10b;
      1238: out3 <= 12'h105;
      1239: out3 <= 12'hff;
      1240: out3 <= 12'hf9;
      1241: out3 <= 12'hf3;
      1242: out3 <= 12'hed;
      1243: out3 <= 12'he6;
      1244: out3 <= 12'he0;
      1245: out3 <= 12'hda;
      1246: out3 <= 12'hd4;
      1247: out3 <= 12'hce;
      1248: out3 <= 12'hc8;
      1249: out3 <= 12'hc2;
      1250: out3 <= 12'hbb;
      1251: out3 <= 12'hb5;
      1252: out3 <= 12'haf;
      1253: out3 <= 12'ha9;
      1254: out3 <= 12'ha3;
      1255: out3 <= 12'h9c;
      1256: out3 <= 12'h96;
      1257: out3 <= 12'h90;
      1258: out3 <= 12'h8a;
      1259: out3 <= 12'h84;
      1260: out3 <= 12'h7d;
      1261: out3 <= 12'h77;
      1262: out3 <= 12'h71;
      1263: out3 <= 12'h6b;
      1264: out3 <= 12'h64;
      1265: out3 <= 12'h5e;
      1266: out3 <= 12'h58;
      1267: out3 <= 12'h52;
      1268: out3 <= 12'h4b;
      1269: out3 <= 12'h45;
      1270: out3 <= 12'h3f;
      1271: out3 <= 12'h39;
      1272: out3 <= 12'h32;
      1273: out3 <= 12'h2c;
      1274: out3 <= 12'h26;
      1275: out3 <= 12'h1f;
      1276: out3 <= 12'h19;
      1277: out3 <= 12'h13;
      1278: out3 <= 12'hd;
      1279: out3 <= 12'h6;
      1280: out3 <= 12'h0;
      1281: out3 <= 12'hffa;
      1282: out3 <= 12'hff3;
      1283: out3 <= 12'hfed;
      1284: out3 <= 12'hfe7;
      1285: out3 <= 12'hfe1;
      1286: out3 <= 12'hfda;
      1287: out3 <= 12'hfd4;
      1288: out3 <= 12'hfce;
      1289: out3 <= 12'hfc7;
      1290: out3 <= 12'hfc1;
      1291: out3 <= 12'hfbb;
      1292: out3 <= 12'hfb5;
      1293: out3 <= 12'hfae;
      1294: out3 <= 12'hfa8;
      1295: out3 <= 12'hfa2;
      1296: out3 <= 12'hf9c;
      1297: out3 <= 12'hf95;
      1298: out3 <= 12'hf8f;
      1299: out3 <= 12'hf89;
      1300: out3 <= 12'hf83;
      1301: out3 <= 12'hf7c;
      1302: out3 <= 12'hf76;
      1303: out3 <= 12'hf70;
      1304: out3 <= 12'hf6a;
      1305: out3 <= 12'hf64;
      1306: out3 <= 12'hf5d;
      1307: out3 <= 12'hf57;
      1308: out3 <= 12'hf51;
      1309: out3 <= 12'hf4b;
      1310: out3 <= 12'hf45;
      1311: out3 <= 12'hf3e;
      1312: out3 <= 12'hf38;
      1313: out3 <= 12'hf32;
      1314: out3 <= 12'hf2c;
      1315: out3 <= 12'hf26;
      1316: out3 <= 12'hf20;
      1317: out3 <= 12'hf1a;
      1318: out3 <= 12'hf13;
      1319: out3 <= 12'hf0d;
      1320: out3 <= 12'hf07;
      1321: out3 <= 12'hf01;
      1322: out3 <= 12'hefb;
      1323: out3 <= 12'hef5;
      1324: out3 <= 12'heef;
      1325: out3 <= 12'hee9;
      1326: out3 <= 12'hee3;
      1327: out3 <= 12'hedd;
      1328: out3 <= 12'hed7;
      1329: out3 <= 12'hed1;
      1330: out3 <= 12'hecb;
      1331: out3 <= 12'hec5;
      1332: out3 <= 12'hebf;
      1333: out3 <= 12'heb9;
      1334: out3 <= 12'heb3;
      1335: out3 <= 12'head;
      1336: out3 <= 12'hea7;
      1337: out3 <= 12'hea1;
      1338: out3 <= 12'he9b;
      1339: out3 <= 12'he95;
      1340: out3 <= 12'he8f;
      1341: out3 <= 12'he8a;
      1342: out3 <= 12'he84;
      1343: out3 <= 12'he7e;
      1344: out3 <= 12'he78;
      1345: out3 <= 12'he72;
      1346: out3 <= 12'he6d;
      1347: out3 <= 12'he67;
      1348: out3 <= 12'he61;
      1349: out3 <= 12'he5b;
      1350: out3 <= 12'he56;
      1351: out3 <= 12'he50;
      1352: out3 <= 12'he4a;
      1353: out3 <= 12'he45;
      1354: out3 <= 12'he3f;
      1355: out3 <= 12'he39;
      1356: out3 <= 12'he34;
      1357: out3 <= 12'he2e;
      1358: out3 <= 12'he28;
      1359: out3 <= 12'he23;
      1360: out3 <= 12'he1d;
      1361: out3 <= 12'he18;
      1362: out3 <= 12'he12;
      1363: out3 <= 12'he0d;
      1364: out3 <= 12'he07;
      1365: out3 <= 12'he02;
      1366: out3 <= 12'hdfc;
      1367: out3 <= 12'hdf7;
      1368: out3 <= 12'hdf2;
      1369: out3 <= 12'hdec;
      1370: out3 <= 12'hde7;
      1371: out3 <= 12'hde1;
      1372: out3 <= 12'hddc;
      1373: out3 <= 12'hdd7;
      1374: out3 <= 12'hdd2;
      1375: out3 <= 12'hdcc;
      1376: out3 <= 12'hdc7;
      1377: out3 <= 12'hdc2;
      1378: out3 <= 12'hdbd;
      1379: out3 <= 12'hdb8;
      1380: out3 <= 12'hdb2;
      1381: out3 <= 12'hdad;
      1382: out3 <= 12'hda8;
      1383: out3 <= 12'hda3;
      1384: out3 <= 12'hd9e;
      1385: out3 <= 12'hd99;
      1386: out3 <= 12'hd94;
      1387: out3 <= 12'hd8f;
      1388: out3 <= 12'hd8a;
      1389: out3 <= 12'hd85;
      1390: out3 <= 12'hd80;
      1391: out3 <= 12'hd7b;
      1392: out3 <= 12'hd76;
      1393: out3 <= 12'hd72;
      1394: out3 <= 12'hd6d;
      1395: out3 <= 12'hd68;
      1396: out3 <= 12'hd63;
      1397: out3 <= 12'hd5e;
      1398: out3 <= 12'hd5a;
      1399: out3 <= 12'hd55;
      1400: out3 <= 12'hd50;
      1401: out3 <= 12'hd4c;
      1402: out3 <= 12'hd47;
      1403: out3 <= 12'hd42;
      1404: out3 <= 12'hd3e;
      1405: out3 <= 12'hd39;
      1406: out3 <= 12'hd35;
      1407: out3 <= 12'hd30;
      1408: out3 <= 12'hd2c;
      1409: out3 <= 12'hd27;
      1410: out3 <= 12'hd23;
      1411: out3 <= 12'hd1f;
      1412: out3 <= 12'hd1a;
      1413: out3 <= 12'hd16;
      1414: out3 <= 12'hd12;
      1415: out3 <= 12'hd0d;
      1416: out3 <= 12'hd09;
      1417: out3 <= 12'hd05;
      1418: out3 <= 12'hd01;
      1419: out3 <= 12'hcfd;
      1420: out3 <= 12'hcf9;
      1421: out3 <= 12'hcf5;
      1422: out3 <= 12'hcf0;
      1423: out3 <= 12'hcec;
      1424: out3 <= 12'hce8;
      1425: out3 <= 12'hce4;
      1426: out3 <= 12'hce1;
      1427: out3 <= 12'hcdd;
      1428: out3 <= 12'hcd9;
      1429: out3 <= 12'hcd5;
      1430: out3 <= 12'hcd1;
      1431: out3 <= 12'hccd;
      1432: out3 <= 12'hcca;
      1433: out3 <= 12'hcc6;
      1434: out3 <= 12'hcc2;
      1435: out3 <= 12'hcbe;
      1436: out3 <= 12'hcbb;
      1437: out3 <= 12'hcb7;
      1438: out3 <= 12'hcb4;
      1439: out3 <= 12'hcb0;
      1440: out3 <= 12'hcad;
      1441: out3 <= 12'hca9;
      1442: out3 <= 12'hca6;
      1443: out3 <= 12'hca2;
      1444: out3 <= 12'hc9f;
      1445: out3 <= 12'hc9c;
      1446: out3 <= 12'hc98;
      1447: out3 <= 12'hc95;
      1448: out3 <= 12'hc92;
      1449: out3 <= 12'hc8e;
      1450: out3 <= 12'hc8b;
      1451: out3 <= 12'hc88;
      1452: out3 <= 12'hc85;
      1453: out3 <= 12'hc82;
      1454: out3 <= 12'hc7f;
      1455: out3 <= 12'hc7c;
      1456: out3 <= 12'hc79;
      1457: out3 <= 12'hc76;
      1458: out3 <= 12'hc73;
      1459: out3 <= 12'hc70;
      1460: out3 <= 12'hc6d;
      1461: out3 <= 12'hc6b;
      1462: out3 <= 12'hc68;
      1463: out3 <= 12'hc65;
      1464: out3 <= 12'hc62;
      1465: out3 <= 12'hc60;
      1466: out3 <= 12'hc5d;
      1467: out3 <= 12'hc5a;
      1468: out3 <= 12'hc58;
      1469: out3 <= 12'hc55;
      1470: out3 <= 12'hc53;
      1471: out3 <= 12'hc50;
      1472: out3 <= 12'hc4e;
      1473: out3 <= 12'hc4c;
      1474: out3 <= 12'hc49;
      1475: out3 <= 12'hc47;
      1476: out3 <= 12'hc45;
      1477: out3 <= 12'hc42;
      1478: out3 <= 12'hc40;
      1479: out3 <= 12'hc3e;
      1480: out3 <= 12'hc3c;
      1481: out3 <= 12'hc3a;
      1482: out3 <= 12'hc38;
      1483: out3 <= 12'hc36;
      1484: out3 <= 12'hc34;
      1485: out3 <= 12'hc32;
      1486: out3 <= 12'hc30;
      1487: out3 <= 12'hc2e;
      1488: out3 <= 12'hc2c;
      1489: out3 <= 12'hc2a;
      1490: out3 <= 12'hc29;
      1491: out3 <= 12'hc27;
      1492: out3 <= 12'hc25;
      1493: out3 <= 12'hc23;
      1494: out3 <= 12'hc22;
      1495: out3 <= 12'hc20;
      1496: out3 <= 12'hc1f;
      1497: out3 <= 12'hc1d;
      1498: out3 <= 12'hc1c;
      1499: out3 <= 12'hc1a;
      1500: out3 <= 12'hc19;
      1501: out3 <= 12'hc18;
      1502: out3 <= 12'hc16;
      1503: out3 <= 12'hc15;
      1504: out3 <= 12'hc14;
      1505: out3 <= 12'hc12;
      1506: out3 <= 12'hc11;
      1507: out3 <= 12'hc10;
      1508: out3 <= 12'hc0f;
      1509: out3 <= 12'hc0e;
      1510: out3 <= 12'hc0d;
      1511: out3 <= 12'hc0c;
      1512: out3 <= 12'hc0b;
      1513: out3 <= 12'hc0a;
      1514: out3 <= 12'hc09;
      1515: out3 <= 12'hc08;
      1516: out3 <= 12'hc08;
      1517: out3 <= 12'hc07;
      1518: out3 <= 12'hc06;
      1519: out3 <= 12'hc06;
      1520: out3 <= 12'hc05;
      1521: out3 <= 12'hc04;
      1522: out3 <= 12'hc04;
      1523: out3 <= 12'hc03;
      1524: out3 <= 12'hc03;
      1525: out3 <= 12'hc02;
      1526: out3 <= 12'hc02;
      1527: out3 <= 12'hc02;
      1528: out3 <= 12'hc01;
      1529: out3 <= 12'hc01;
      1530: out3 <= 12'hc01;
      1531: out3 <= 12'hc00;
      1532: out3 <= 12'hc00;
      1533: out3 <= 12'hc00;
      1534: out3 <= 12'hc00;
      1535: out3 <= 12'hc00;
      1536: out3 <= 12'hc00;
      1537: out3 <= 12'hc00;
      1538: out3 <= 12'hc00;
      1539: out3 <= 12'hc00;
      1540: out3 <= 12'hc00;
      1541: out3 <= 12'hc00;
      1542: out3 <= 12'hc01;
      1543: out3 <= 12'hc01;
      1544: out3 <= 12'hc01;
      1545: out3 <= 12'hc02;
      1546: out3 <= 12'hc02;
      1547: out3 <= 12'hc02;
      1548: out3 <= 12'hc03;
      1549: out3 <= 12'hc03;
      1550: out3 <= 12'hc04;
      1551: out3 <= 12'hc04;
      1552: out3 <= 12'hc05;
      1553: out3 <= 12'hc06;
      1554: out3 <= 12'hc06;
      1555: out3 <= 12'hc07;
      1556: out3 <= 12'hc08;
      1557: out3 <= 12'hc08;
      1558: out3 <= 12'hc09;
      1559: out3 <= 12'hc0a;
      1560: out3 <= 12'hc0b;
      1561: out3 <= 12'hc0c;
      1562: out3 <= 12'hc0d;
      1563: out3 <= 12'hc0e;
      1564: out3 <= 12'hc0f;
      1565: out3 <= 12'hc10;
      1566: out3 <= 12'hc11;
      1567: out3 <= 12'hc12;
      1568: out3 <= 12'hc14;
      1569: out3 <= 12'hc15;
      1570: out3 <= 12'hc16;
      1571: out3 <= 12'hc18;
      1572: out3 <= 12'hc19;
      1573: out3 <= 12'hc1a;
      1574: out3 <= 12'hc1c;
      1575: out3 <= 12'hc1d;
      1576: out3 <= 12'hc1f;
      1577: out3 <= 12'hc20;
      1578: out3 <= 12'hc22;
      1579: out3 <= 12'hc23;
      1580: out3 <= 12'hc25;
      1581: out3 <= 12'hc27;
      1582: out3 <= 12'hc29;
      1583: out3 <= 12'hc2a;
      1584: out3 <= 12'hc2c;
      1585: out3 <= 12'hc2e;
      1586: out3 <= 12'hc30;
      1587: out3 <= 12'hc32;
      1588: out3 <= 12'hc34;
      1589: out3 <= 12'hc36;
      1590: out3 <= 12'hc38;
      1591: out3 <= 12'hc3a;
      1592: out3 <= 12'hc3c;
      1593: out3 <= 12'hc3e;
      1594: out3 <= 12'hc40;
      1595: out3 <= 12'hc42;
      1596: out3 <= 12'hc45;
      1597: out3 <= 12'hc47;
      1598: out3 <= 12'hc49;
      1599: out3 <= 12'hc4c;
      1600: out3 <= 12'hc4e;
      1601: out3 <= 12'hc50;
      1602: out3 <= 12'hc53;
      1603: out3 <= 12'hc55;
      1604: out3 <= 12'hc58;
      1605: out3 <= 12'hc5a;
      1606: out3 <= 12'hc5d;
      1607: out3 <= 12'hc60;
      1608: out3 <= 12'hc62;
      1609: out3 <= 12'hc65;
      1610: out3 <= 12'hc68;
      1611: out3 <= 12'hc6b;
      1612: out3 <= 12'hc6d;
      1613: out3 <= 12'hc70;
      1614: out3 <= 12'hc73;
      1615: out3 <= 12'hc76;
      1616: out3 <= 12'hc79;
      1617: out3 <= 12'hc7c;
      1618: out3 <= 12'hc7f;
      1619: out3 <= 12'hc82;
      1620: out3 <= 12'hc85;
      1621: out3 <= 12'hc88;
      1622: out3 <= 12'hc8b;
      1623: out3 <= 12'hc8e;
      1624: out3 <= 12'hc92;
      1625: out3 <= 12'hc95;
      1626: out3 <= 12'hc98;
      1627: out3 <= 12'hc9c;
      1628: out3 <= 12'hc9f;
      1629: out3 <= 12'hca2;
      1630: out3 <= 12'hca6;
      1631: out3 <= 12'hca9;
      1632: out3 <= 12'hcad;
      1633: out3 <= 12'hcb0;
      1634: out3 <= 12'hcb4;
      1635: out3 <= 12'hcb7;
      1636: out3 <= 12'hcbb;
      1637: out3 <= 12'hcbe;
      1638: out3 <= 12'hcc2;
      1639: out3 <= 12'hcc6;
      1640: out3 <= 12'hcca;
      1641: out3 <= 12'hccd;
      1642: out3 <= 12'hcd1;
      1643: out3 <= 12'hcd5;
      1644: out3 <= 12'hcd9;
      1645: out3 <= 12'hcdd;
      1646: out3 <= 12'hce1;
      1647: out3 <= 12'hce4;
      1648: out3 <= 12'hce8;
      1649: out3 <= 12'hcec;
      1650: out3 <= 12'hcf0;
      1651: out3 <= 12'hcf5;
      1652: out3 <= 12'hcf9;
      1653: out3 <= 12'hcfd;
      1654: out3 <= 12'hd01;
      1655: out3 <= 12'hd05;
      1656: out3 <= 12'hd09;
      1657: out3 <= 12'hd0d;
      1658: out3 <= 12'hd12;
      1659: out3 <= 12'hd16;
      1660: out3 <= 12'hd1a;
      1661: out3 <= 12'hd1f;
      1662: out3 <= 12'hd23;
      1663: out3 <= 12'hd27;
      1664: out3 <= 12'hd2c;
      1665: out3 <= 12'hd30;
      1666: out3 <= 12'hd35;
      1667: out3 <= 12'hd39;
      1668: out3 <= 12'hd3e;
      1669: out3 <= 12'hd42;
      1670: out3 <= 12'hd47;
      1671: out3 <= 12'hd4c;
      1672: out3 <= 12'hd50;
      1673: out3 <= 12'hd55;
      1674: out3 <= 12'hd5a;
      1675: out3 <= 12'hd5e;
      1676: out3 <= 12'hd63;
      1677: out3 <= 12'hd68;
      1678: out3 <= 12'hd6d;
      1679: out3 <= 12'hd72;
      1680: out3 <= 12'hd76;
      1681: out3 <= 12'hd7b;
      1682: out3 <= 12'hd80;
      1683: out3 <= 12'hd85;
      1684: out3 <= 12'hd8a;
      1685: out3 <= 12'hd8f;
      1686: out3 <= 12'hd94;
      1687: out3 <= 12'hd99;
      1688: out3 <= 12'hd9e;
      1689: out3 <= 12'hda3;
      1690: out3 <= 12'hda8;
      1691: out3 <= 12'hdad;
      1692: out3 <= 12'hdb2;
      1693: out3 <= 12'hdb8;
      1694: out3 <= 12'hdbd;
      1695: out3 <= 12'hdc2;
      1696: out3 <= 12'hdc7;
      1697: out3 <= 12'hdcc;
      1698: out3 <= 12'hdd2;
      1699: out3 <= 12'hdd7;
      1700: out3 <= 12'hddc;
      1701: out3 <= 12'hde1;
      1702: out3 <= 12'hde7;
      1703: out3 <= 12'hdec;
      1704: out3 <= 12'hdf2;
      1705: out3 <= 12'hdf7;
      1706: out3 <= 12'hdfc;
      1707: out3 <= 12'he02;
      1708: out3 <= 12'he07;
      1709: out3 <= 12'he0d;
      1710: out3 <= 12'he12;
      1711: out3 <= 12'he18;
      1712: out3 <= 12'he1d;
      1713: out3 <= 12'he23;
      1714: out3 <= 12'he28;
      1715: out3 <= 12'he2e;
      1716: out3 <= 12'he34;
      1717: out3 <= 12'he39;
      1718: out3 <= 12'he3f;
      1719: out3 <= 12'he45;
      1720: out3 <= 12'he4a;
      1721: out3 <= 12'he50;
      1722: out3 <= 12'he56;
      1723: out3 <= 12'he5b;
      1724: out3 <= 12'he61;
      1725: out3 <= 12'he67;
      1726: out3 <= 12'he6d;
      1727: out3 <= 12'he72;
      1728: out3 <= 12'he78;
      1729: out3 <= 12'he7e;
      1730: out3 <= 12'he84;
      1731: out3 <= 12'he8a;
      1732: out3 <= 12'he8f;
      1733: out3 <= 12'he95;
      1734: out3 <= 12'he9b;
      1735: out3 <= 12'hea1;
      1736: out3 <= 12'hea7;
      1737: out3 <= 12'head;
      1738: out3 <= 12'heb3;
      1739: out3 <= 12'heb9;
      1740: out3 <= 12'hebf;
      1741: out3 <= 12'hec5;
      1742: out3 <= 12'hecb;
      1743: out3 <= 12'hed1;
      1744: out3 <= 12'hed7;
      1745: out3 <= 12'hedd;
      1746: out3 <= 12'hee3;
      1747: out3 <= 12'hee9;
      1748: out3 <= 12'heef;
      1749: out3 <= 12'hef5;
      1750: out3 <= 12'hefb;
      1751: out3 <= 12'hf01;
      1752: out3 <= 12'hf07;
      1753: out3 <= 12'hf0d;
      1754: out3 <= 12'hf13;
      1755: out3 <= 12'hf1a;
      1756: out3 <= 12'hf20;
      1757: out3 <= 12'hf26;
      1758: out3 <= 12'hf2c;
      1759: out3 <= 12'hf32;
      1760: out3 <= 12'hf38;
      1761: out3 <= 12'hf3e;
      1762: out3 <= 12'hf45;
      1763: out3 <= 12'hf4b;
      1764: out3 <= 12'hf51;
      1765: out3 <= 12'hf57;
      1766: out3 <= 12'hf5d;
      1767: out3 <= 12'hf64;
      1768: out3 <= 12'hf6a;
      1769: out3 <= 12'hf70;
      1770: out3 <= 12'hf76;
      1771: out3 <= 12'hf7c;
      1772: out3 <= 12'hf83;
      1773: out3 <= 12'hf89;
      1774: out3 <= 12'hf8f;
      1775: out3 <= 12'hf95;
      1776: out3 <= 12'hf9c;
      1777: out3 <= 12'hfa2;
      1778: out3 <= 12'hfa8;
      1779: out3 <= 12'hfae;
      1780: out3 <= 12'hfb5;
      1781: out3 <= 12'hfbb;
      1782: out3 <= 12'hfc1;
      1783: out3 <= 12'hfc7;
      1784: out3 <= 12'hfce;
      1785: out3 <= 12'hfd4;
      1786: out3 <= 12'hfda;
      1787: out3 <= 12'hfe1;
      1788: out3 <= 12'hfe7;
      1789: out3 <= 12'hfed;
      1790: out3 <= 12'hff3;
      1791: out3 <= 12'hffa;
      1792: out3 <= 12'h0;
      1793: out3 <= 12'h6;
      1794: out3 <= 12'hd;
      1795: out3 <= 12'h13;
      1796: out3 <= 12'h19;
      1797: out3 <= 12'h1f;
      1798: out3 <= 12'h26;
      1799: out3 <= 12'h2c;
      1800: out3 <= 12'h32;
      1801: out3 <= 12'h39;
      1802: out3 <= 12'h3f;
      1803: out3 <= 12'h45;
      1804: out3 <= 12'h4b;
      1805: out3 <= 12'h52;
      1806: out3 <= 12'h58;
      1807: out3 <= 12'h5e;
      1808: out3 <= 12'h64;
      1809: out3 <= 12'h6b;
      1810: out3 <= 12'h71;
      1811: out3 <= 12'h77;
      1812: out3 <= 12'h7d;
      1813: out3 <= 12'h84;
      1814: out3 <= 12'h8a;
      1815: out3 <= 12'h90;
      1816: out3 <= 12'h96;
      1817: out3 <= 12'h9c;
      1818: out3 <= 12'ha3;
      1819: out3 <= 12'ha9;
      1820: out3 <= 12'haf;
      1821: out3 <= 12'hb5;
      1822: out3 <= 12'hbb;
      1823: out3 <= 12'hc2;
      1824: out3 <= 12'hc8;
      1825: out3 <= 12'hce;
      1826: out3 <= 12'hd4;
      1827: out3 <= 12'hda;
      1828: out3 <= 12'he0;
      1829: out3 <= 12'he6;
      1830: out3 <= 12'hed;
      1831: out3 <= 12'hf3;
      1832: out3 <= 12'hf9;
      1833: out3 <= 12'hff;
      1834: out3 <= 12'h105;
      1835: out3 <= 12'h10b;
      1836: out3 <= 12'h111;
      1837: out3 <= 12'h117;
      1838: out3 <= 12'h11d;
      1839: out3 <= 12'h123;
      1840: out3 <= 12'h129;
      1841: out3 <= 12'h12f;
      1842: out3 <= 12'h135;
      1843: out3 <= 12'h13b;
      1844: out3 <= 12'h141;
      1845: out3 <= 12'h147;
      1846: out3 <= 12'h14d;
      1847: out3 <= 12'h153;
      1848: out3 <= 12'h159;
      1849: out3 <= 12'h15f;
      1850: out3 <= 12'h165;
      1851: out3 <= 12'h16b;
      1852: out3 <= 12'h171;
      1853: out3 <= 12'h176;
      1854: out3 <= 12'h17c;
      1855: out3 <= 12'h182;
      1856: out3 <= 12'h188;
      1857: out3 <= 12'h18e;
      1858: out3 <= 12'h193;
      1859: out3 <= 12'h199;
      1860: out3 <= 12'h19f;
      1861: out3 <= 12'h1a5;
      1862: out3 <= 12'h1aa;
      1863: out3 <= 12'h1b0;
      1864: out3 <= 12'h1b6;
      1865: out3 <= 12'h1bb;
      1866: out3 <= 12'h1c1;
      1867: out3 <= 12'h1c7;
      1868: out3 <= 12'h1cc;
      1869: out3 <= 12'h1d2;
      1870: out3 <= 12'h1d8;
      1871: out3 <= 12'h1dd;
      1872: out3 <= 12'h1e3;
      1873: out3 <= 12'h1e8;
      1874: out3 <= 12'h1ee;
      1875: out3 <= 12'h1f3;
      1876: out3 <= 12'h1f9;
      1877: out3 <= 12'h1fe;
      1878: out3 <= 12'h204;
      1879: out3 <= 12'h209;
      1880: out3 <= 12'h20e;
      1881: out3 <= 12'h214;
      1882: out3 <= 12'h219;
      1883: out3 <= 12'h21f;
      1884: out3 <= 12'h224;
      1885: out3 <= 12'h229;
      1886: out3 <= 12'h22e;
      1887: out3 <= 12'h234;
      1888: out3 <= 12'h239;
      1889: out3 <= 12'h23e;
      1890: out3 <= 12'h243;
      1891: out3 <= 12'h248;
      1892: out3 <= 12'h24e;
      1893: out3 <= 12'h253;
      1894: out3 <= 12'h258;
      1895: out3 <= 12'h25d;
      1896: out3 <= 12'h262;
      1897: out3 <= 12'h267;
      1898: out3 <= 12'h26c;
      1899: out3 <= 12'h271;
      1900: out3 <= 12'h276;
      1901: out3 <= 12'h27b;
      1902: out3 <= 12'h280;
      1903: out3 <= 12'h285;
      1904: out3 <= 12'h28a;
      1905: out3 <= 12'h28e;
      1906: out3 <= 12'h293;
      1907: out3 <= 12'h298;
      1908: out3 <= 12'h29d;
      1909: out3 <= 12'h2a2;
      1910: out3 <= 12'h2a6;
      1911: out3 <= 12'h2ab;
      1912: out3 <= 12'h2b0;
      1913: out3 <= 12'h2b4;
      1914: out3 <= 12'h2b9;
      1915: out3 <= 12'h2be;
      1916: out3 <= 12'h2c2;
      1917: out3 <= 12'h2c7;
      1918: out3 <= 12'h2cb;
      1919: out3 <= 12'h2d0;
      1920: out3 <= 12'h2d4;
      1921: out3 <= 12'h2d9;
      1922: out3 <= 12'h2dd;
      1923: out3 <= 12'h2e1;
      1924: out3 <= 12'h2e6;
      1925: out3 <= 12'h2ea;
      1926: out3 <= 12'h2ee;
      1927: out3 <= 12'h2f3;
      1928: out3 <= 12'h2f7;
      1929: out3 <= 12'h2fb;
      1930: out3 <= 12'h2ff;
      1931: out3 <= 12'h303;
      1932: out3 <= 12'h307;
      1933: out3 <= 12'h30b;
      1934: out3 <= 12'h310;
      1935: out3 <= 12'h314;
      1936: out3 <= 12'h318;
      1937: out3 <= 12'h31c;
      1938: out3 <= 12'h31f;
      1939: out3 <= 12'h323;
      1940: out3 <= 12'h327;
      1941: out3 <= 12'h32b;
      1942: out3 <= 12'h32f;
      1943: out3 <= 12'h333;
      1944: out3 <= 12'h336;
      1945: out3 <= 12'h33a;
      1946: out3 <= 12'h33e;
      1947: out3 <= 12'h342;
      1948: out3 <= 12'h345;
      1949: out3 <= 12'h349;
      1950: out3 <= 12'h34c;
      1951: out3 <= 12'h350;
      1952: out3 <= 12'h353;
      1953: out3 <= 12'h357;
      1954: out3 <= 12'h35a;
      1955: out3 <= 12'h35e;
      1956: out3 <= 12'h361;
      1957: out3 <= 12'h364;
      1958: out3 <= 12'h368;
      1959: out3 <= 12'h36b;
      1960: out3 <= 12'h36e;
      1961: out3 <= 12'h372;
      1962: out3 <= 12'h375;
      1963: out3 <= 12'h378;
      1964: out3 <= 12'h37b;
      1965: out3 <= 12'h37e;
      1966: out3 <= 12'h381;
      1967: out3 <= 12'h384;
      1968: out3 <= 12'h387;
      1969: out3 <= 12'h38a;
      1970: out3 <= 12'h38d;
      1971: out3 <= 12'h390;
      1972: out3 <= 12'h393;
      1973: out3 <= 12'h395;
      1974: out3 <= 12'h398;
      1975: out3 <= 12'h39b;
      1976: out3 <= 12'h39e;
      1977: out3 <= 12'h3a0;
      1978: out3 <= 12'h3a3;
      1979: out3 <= 12'h3a6;
      1980: out3 <= 12'h3a8;
      1981: out3 <= 12'h3ab;
      1982: out3 <= 12'h3ad;
      1983: out3 <= 12'h3b0;
      1984: out3 <= 12'h3b2;
      1985: out3 <= 12'h3b4;
      1986: out3 <= 12'h3b7;
      1987: out3 <= 12'h3b9;
      1988: out3 <= 12'h3bb;
      1989: out3 <= 12'h3be;
      1990: out3 <= 12'h3c0;
      1991: out3 <= 12'h3c2;
      1992: out3 <= 12'h3c4;
      1993: out3 <= 12'h3c6;
      1994: out3 <= 12'h3c8;
      1995: out3 <= 12'h3ca;
      1996: out3 <= 12'h3cc;
      1997: out3 <= 12'h3ce;
      1998: out3 <= 12'h3d0;
      1999: out3 <= 12'h3d2;
      2000: out3 <= 12'h3d4;
      2001: out3 <= 12'h3d6;
      2002: out3 <= 12'h3d7;
      2003: out3 <= 12'h3d9;
      2004: out3 <= 12'h3db;
      2005: out3 <= 12'h3dd;
      2006: out3 <= 12'h3de;
      2007: out3 <= 12'h3e0;
      2008: out3 <= 12'h3e1;
      2009: out3 <= 12'h3e3;
      2010: out3 <= 12'h3e4;
      2011: out3 <= 12'h3e6;
      2012: out3 <= 12'h3e7;
      2013: out3 <= 12'h3e8;
      2014: out3 <= 12'h3ea;
      2015: out3 <= 12'h3eb;
      2016: out3 <= 12'h3ec;
      2017: out3 <= 12'h3ee;
      2018: out3 <= 12'h3ef;
      2019: out3 <= 12'h3f0;
      2020: out3 <= 12'h3f1;
      2021: out3 <= 12'h3f2;
      2022: out3 <= 12'h3f3;
      2023: out3 <= 12'h3f4;
      2024: out3 <= 12'h3f5;
      2025: out3 <= 12'h3f6;
      2026: out3 <= 12'h3f7;
      2027: out3 <= 12'h3f8;
      2028: out3 <= 12'h3f8;
      2029: out3 <= 12'h3f9;
      2030: out3 <= 12'h3fa;
      2031: out3 <= 12'h3fa;
      2032: out3 <= 12'h3fb;
      2033: out3 <= 12'h3fc;
      2034: out3 <= 12'h3fc;
      2035: out3 <= 12'h3fd;
      2036: out3 <= 12'h3fd;
      2037: out3 <= 12'h3fe;
      2038: out3 <= 12'h3fe;
      2039: out3 <= 12'h3fe;
      2040: out3 <= 12'h3ff;
      2041: out3 <= 12'h3ff;
      2042: out3 <= 12'h3ff;
      2043: out3 <= 12'h400;
      2044: out3 <= 12'h400;
      2045: out3 <= 12'h400;
      2046: out3 <= 12'h400;
      2047: out3 <= 12'h400;
      default: out3 <= 0;
   endcase
   end
// synthesis attribute rom_style of out3 is "block"
endmodule



module D2_46012(addr, out, clk);
   input clk;
   output [11:0] out;
   reg [11:0] out, out2, out3;
   input [10:0] addr;

   always @(posedge clk) begin
      out2 <= out3;
      out <= out2;
   case(addr)
      0: out3 <= 12'h0;
      1: out3 <= 12'hffd;
      2: out3 <= 12'hffa;
      3: out3 <= 12'hff7;
      4: out3 <= 12'hff3;
      5: out3 <= 12'hff0;
      6: out3 <= 12'hfed;
      7: out3 <= 12'hfea;
      8: out3 <= 12'hfe7;
      9: out3 <= 12'hfe4;
      10: out3 <= 12'hfe1;
      11: out3 <= 12'hfdd;
      12: out3 <= 12'hfda;
      13: out3 <= 12'hfd7;
      14: out3 <= 12'hfd4;
      15: out3 <= 12'hfd1;
      16: out3 <= 12'hfce;
      17: out3 <= 12'hfcb;
      18: out3 <= 12'hfc7;
      19: out3 <= 12'hfc4;
      20: out3 <= 12'hfc1;
      21: out3 <= 12'hfbe;
      22: out3 <= 12'hfbb;
      23: out3 <= 12'hfb8;
      24: out3 <= 12'hfb5;
      25: out3 <= 12'hfb2;
      26: out3 <= 12'hfae;
      27: out3 <= 12'hfab;
      28: out3 <= 12'hfa8;
      29: out3 <= 12'hfa5;
      30: out3 <= 12'hfa2;
      31: out3 <= 12'hf9f;
      32: out3 <= 12'hf9c;
      33: out3 <= 12'hf99;
      34: out3 <= 12'hf95;
      35: out3 <= 12'hf92;
      36: out3 <= 12'hf8f;
      37: out3 <= 12'hf8c;
      38: out3 <= 12'hf89;
      39: out3 <= 12'hf86;
      40: out3 <= 12'hf83;
      41: out3 <= 12'hf80;
      42: out3 <= 12'hf7c;
      43: out3 <= 12'hf79;
      44: out3 <= 12'hf76;
      45: out3 <= 12'hf73;
      46: out3 <= 12'hf70;
      47: out3 <= 12'hf6d;
      48: out3 <= 12'hf6a;
      49: out3 <= 12'hf67;
      50: out3 <= 12'hf64;
      51: out3 <= 12'hf60;
      52: out3 <= 12'hf5d;
      53: out3 <= 12'hf5a;
      54: out3 <= 12'hf57;
      55: out3 <= 12'hf54;
      56: out3 <= 12'hf51;
      57: out3 <= 12'hf4e;
      58: out3 <= 12'hf4b;
      59: out3 <= 12'hf48;
      60: out3 <= 12'hf45;
      61: out3 <= 12'hf41;
      62: out3 <= 12'hf3e;
      63: out3 <= 12'hf3b;
      64: out3 <= 12'hf38;
      65: out3 <= 12'hf35;
      66: out3 <= 12'hf32;
      67: out3 <= 12'hf2f;
      68: out3 <= 12'hf2c;
      69: out3 <= 12'hf29;
      70: out3 <= 12'hf26;
      71: out3 <= 12'hf23;
      72: out3 <= 12'hf20;
      73: out3 <= 12'hf1d;
      74: out3 <= 12'hf1a;
      75: out3 <= 12'hf16;
      76: out3 <= 12'hf13;
      77: out3 <= 12'hf10;
      78: out3 <= 12'hf0d;
      79: out3 <= 12'hf0a;
      80: out3 <= 12'hf07;
      81: out3 <= 12'hf04;
      82: out3 <= 12'hf01;
      83: out3 <= 12'hefe;
      84: out3 <= 12'hefb;
      85: out3 <= 12'hef8;
      86: out3 <= 12'hef5;
      87: out3 <= 12'hef2;
      88: out3 <= 12'heef;
      89: out3 <= 12'heec;
      90: out3 <= 12'hee9;
      91: out3 <= 12'hee6;
      92: out3 <= 12'hee3;
      93: out3 <= 12'hee0;
      94: out3 <= 12'hedd;
      95: out3 <= 12'heda;
      96: out3 <= 12'hed7;
      97: out3 <= 12'hed4;
      98: out3 <= 12'hed1;
      99: out3 <= 12'hece;
      100: out3 <= 12'hecb;
      101: out3 <= 12'hec8;
      102: out3 <= 12'hec5;
      103: out3 <= 12'hec2;
      104: out3 <= 12'hebf;
      105: out3 <= 12'hebc;
      106: out3 <= 12'heb9;
      107: out3 <= 12'heb6;
      108: out3 <= 12'heb3;
      109: out3 <= 12'heb0;
      110: out3 <= 12'head;
      111: out3 <= 12'heaa;
      112: out3 <= 12'hea7;
      113: out3 <= 12'hea4;
      114: out3 <= 12'hea1;
      115: out3 <= 12'he9e;
      116: out3 <= 12'he9b;
      117: out3 <= 12'he98;
      118: out3 <= 12'he95;
      119: out3 <= 12'he92;
      120: out3 <= 12'he8f;
      121: out3 <= 12'he8d;
      122: out3 <= 12'he8a;
      123: out3 <= 12'he87;
      124: out3 <= 12'he84;
      125: out3 <= 12'he81;
      126: out3 <= 12'he7e;
      127: out3 <= 12'he7b;
      128: out3 <= 12'he78;
      129: out3 <= 12'he75;
      130: out3 <= 12'he72;
      131: out3 <= 12'he6f;
      132: out3 <= 12'he6d;
      133: out3 <= 12'he6a;
      134: out3 <= 12'he67;
      135: out3 <= 12'he64;
      136: out3 <= 12'he61;
      137: out3 <= 12'he5e;
      138: out3 <= 12'he5b;
      139: out3 <= 12'he58;
      140: out3 <= 12'he56;
      141: out3 <= 12'he53;
      142: out3 <= 12'he50;
      143: out3 <= 12'he4d;
      144: out3 <= 12'he4a;
      145: out3 <= 12'he47;
      146: out3 <= 12'he45;
      147: out3 <= 12'he42;
      148: out3 <= 12'he3f;
      149: out3 <= 12'he3c;
      150: out3 <= 12'he39;
      151: out3 <= 12'he36;
      152: out3 <= 12'he34;
      153: out3 <= 12'he31;
      154: out3 <= 12'he2e;
      155: out3 <= 12'he2b;
      156: out3 <= 12'he28;
      157: out3 <= 12'he26;
      158: out3 <= 12'he23;
      159: out3 <= 12'he20;
      160: out3 <= 12'he1d;
      161: out3 <= 12'he1b;
      162: out3 <= 12'he18;
      163: out3 <= 12'he15;
      164: out3 <= 12'he12;
      165: out3 <= 12'he0f;
      166: out3 <= 12'he0d;
      167: out3 <= 12'he0a;
      168: out3 <= 12'he07;
      169: out3 <= 12'he05;
      170: out3 <= 12'he02;
      171: out3 <= 12'hdff;
      172: out3 <= 12'hdfc;
      173: out3 <= 12'hdfa;
      174: out3 <= 12'hdf7;
      175: out3 <= 12'hdf4;
      176: out3 <= 12'hdf2;
      177: out3 <= 12'hdef;
      178: out3 <= 12'hdec;
      179: out3 <= 12'hde9;
      180: out3 <= 12'hde7;
      181: out3 <= 12'hde4;
      182: out3 <= 12'hde1;
      183: out3 <= 12'hddf;
      184: out3 <= 12'hddc;
      185: out3 <= 12'hdda;
      186: out3 <= 12'hdd7;
      187: out3 <= 12'hdd4;
      188: out3 <= 12'hdd2;
      189: out3 <= 12'hdcf;
      190: out3 <= 12'hdcc;
      191: out3 <= 12'hdca;
      192: out3 <= 12'hdc7;
      193: out3 <= 12'hdc4;
      194: out3 <= 12'hdc2;
      195: out3 <= 12'hdbf;
      196: out3 <= 12'hdbd;
      197: out3 <= 12'hdba;
      198: out3 <= 12'hdb8;
      199: out3 <= 12'hdb5;
      200: out3 <= 12'hdb2;
      201: out3 <= 12'hdb0;
      202: out3 <= 12'hdad;
      203: out3 <= 12'hdab;
      204: out3 <= 12'hda8;
      205: out3 <= 12'hda6;
      206: out3 <= 12'hda3;
      207: out3 <= 12'hda1;
      208: out3 <= 12'hd9e;
      209: out3 <= 12'hd9b;
      210: out3 <= 12'hd99;
      211: out3 <= 12'hd96;
      212: out3 <= 12'hd94;
      213: out3 <= 12'hd91;
      214: out3 <= 12'hd8f;
      215: out3 <= 12'hd8c;
      216: out3 <= 12'hd8a;
      217: out3 <= 12'hd88;
      218: out3 <= 12'hd85;
      219: out3 <= 12'hd83;
      220: out3 <= 12'hd80;
      221: out3 <= 12'hd7e;
      222: out3 <= 12'hd7b;
      223: out3 <= 12'hd79;
      224: out3 <= 12'hd76;
      225: out3 <= 12'hd74;
      226: out3 <= 12'hd72;
      227: out3 <= 12'hd6f;
      228: out3 <= 12'hd6d;
      229: out3 <= 12'hd6a;
      230: out3 <= 12'hd68;
      231: out3 <= 12'hd66;
      232: out3 <= 12'hd63;
      233: out3 <= 12'hd61;
      234: out3 <= 12'hd5e;
      235: out3 <= 12'hd5c;
      236: out3 <= 12'hd5a;
      237: out3 <= 12'hd57;
      238: out3 <= 12'hd55;
      239: out3 <= 12'hd53;
      240: out3 <= 12'hd50;
      241: out3 <= 12'hd4e;
      242: out3 <= 12'hd4c;
      243: out3 <= 12'hd49;
      244: out3 <= 12'hd47;
      245: out3 <= 12'hd45;
      246: out3 <= 12'hd42;
      247: out3 <= 12'hd40;
      248: out3 <= 12'hd3e;
      249: out3 <= 12'hd3c;
      250: out3 <= 12'hd39;
      251: out3 <= 12'hd37;
      252: out3 <= 12'hd35;
      253: out3 <= 12'hd33;
      254: out3 <= 12'hd30;
      255: out3 <= 12'hd2e;
      256: out3 <= 12'hd2c;
      257: out3 <= 12'hd2a;
      258: out3 <= 12'hd27;
      259: out3 <= 12'hd25;
      260: out3 <= 12'hd23;
      261: out3 <= 12'hd21;
      262: out3 <= 12'hd1f;
      263: out3 <= 12'hd1d;
      264: out3 <= 12'hd1a;
      265: out3 <= 12'hd18;
      266: out3 <= 12'hd16;
      267: out3 <= 12'hd14;
      268: out3 <= 12'hd12;
      269: out3 <= 12'hd10;
      270: out3 <= 12'hd0d;
      271: out3 <= 12'hd0b;
      272: out3 <= 12'hd09;
      273: out3 <= 12'hd07;
      274: out3 <= 12'hd05;
      275: out3 <= 12'hd03;
      276: out3 <= 12'hd01;
      277: out3 <= 12'hcff;
      278: out3 <= 12'hcfd;
      279: out3 <= 12'hcfb;
      280: out3 <= 12'hcf9;
      281: out3 <= 12'hcf7;
      282: out3 <= 12'hcf5;
      283: out3 <= 12'hcf2;
      284: out3 <= 12'hcf0;
      285: out3 <= 12'hcee;
      286: out3 <= 12'hcec;
      287: out3 <= 12'hcea;
      288: out3 <= 12'hce8;
      289: out3 <= 12'hce6;
      290: out3 <= 12'hce4;
      291: out3 <= 12'hce2;
      292: out3 <= 12'hce1;
      293: out3 <= 12'hcdf;
      294: out3 <= 12'hcdd;
      295: out3 <= 12'hcdb;
      296: out3 <= 12'hcd9;
      297: out3 <= 12'hcd7;
      298: out3 <= 12'hcd5;
      299: out3 <= 12'hcd3;
      300: out3 <= 12'hcd1;
      301: out3 <= 12'hccf;
      302: out3 <= 12'hccd;
      303: out3 <= 12'hccb;
      304: out3 <= 12'hcca;
      305: out3 <= 12'hcc8;
      306: out3 <= 12'hcc6;
      307: out3 <= 12'hcc4;
      308: out3 <= 12'hcc2;
      309: out3 <= 12'hcc0;
      310: out3 <= 12'hcbe;
      311: out3 <= 12'hcbd;
      312: out3 <= 12'hcbb;
      313: out3 <= 12'hcb9;
      314: out3 <= 12'hcb7;
      315: out3 <= 12'hcb5;
      316: out3 <= 12'hcb4;
      317: out3 <= 12'hcb2;
      318: out3 <= 12'hcb0;
      319: out3 <= 12'hcae;
      320: out3 <= 12'hcad;
      321: out3 <= 12'hcab;
      322: out3 <= 12'hca9;
      323: out3 <= 12'hca7;
      324: out3 <= 12'hca6;
      325: out3 <= 12'hca4;
      326: out3 <= 12'hca2;
      327: out3 <= 12'hca1;
      328: out3 <= 12'hc9f;
      329: out3 <= 12'hc9d;
      330: out3 <= 12'hc9c;
      331: out3 <= 12'hc9a;
      332: out3 <= 12'hc98;
      333: out3 <= 12'hc97;
      334: out3 <= 12'hc95;
      335: out3 <= 12'hc93;
      336: out3 <= 12'hc92;
      337: out3 <= 12'hc90;
      338: out3 <= 12'hc8e;
      339: out3 <= 12'hc8d;
      340: out3 <= 12'hc8b;
      341: out3 <= 12'hc8a;
      342: out3 <= 12'hc88;
      343: out3 <= 12'hc87;
      344: out3 <= 12'hc85;
      345: out3 <= 12'hc83;
      346: out3 <= 12'hc82;
      347: out3 <= 12'hc80;
      348: out3 <= 12'hc7f;
      349: out3 <= 12'hc7d;
      350: out3 <= 12'hc7c;
      351: out3 <= 12'hc7a;
      352: out3 <= 12'hc79;
      353: out3 <= 12'hc77;
      354: out3 <= 12'hc76;
      355: out3 <= 12'hc75;
      356: out3 <= 12'hc73;
      357: out3 <= 12'hc72;
      358: out3 <= 12'hc70;
      359: out3 <= 12'hc6f;
      360: out3 <= 12'hc6d;
      361: out3 <= 12'hc6c;
      362: out3 <= 12'hc6b;
      363: out3 <= 12'hc69;
      364: out3 <= 12'hc68;
      365: out3 <= 12'hc66;
      366: out3 <= 12'hc65;
      367: out3 <= 12'hc64;
      368: out3 <= 12'hc62;
      369: out3 <= 12'hc61;
      370: out3 <= 12'hc60;
      371: out3 <= 12'hc5e;
      372: out3 <= 12'hc5d;
      373: out3 <= 12'hc5c;
      374: out3 <= 12'hc5a;
      375: out3 <= 12'hc59;
      376: out3 <= 12'hc58;
      377: out3 <= 12'hc57;
      378: out3 <= 12'hc55;
      379: out3 <= 12'hc54;
      380: out3 <= 12'hc53;
      381: out3 <= 12'hc52;
      382: out3 <= 12'hc50;
      383: out3 <= 12'hc4f;
      384: out3 <= 12'hc4e;
      385: out3 <= 12'hc4d;
      386: out3 <= 12'hc4c;
      387: out3 <= 12'hc4a;
      388: out3 <= 12'hc49;
      389: out3 <= 12'hc48;
      390: out3 <= 12'hc47;
      391: out3 <= 12'hc46;
      392: out3 <= 12'hc45;
      393: out3 <= 12'hc43;
      394: out3 <= 12'hc42;
      395: out3 <= 12'hc41;
      396: out3 <= 12'hc40;
      397: out3 <= 12'hc3f;
      398: out3 <= 12'hc3e;
      399: out3 <= 12'hc3d;
      400: out3 <= 12'hc3c;
      401: out3 <= 12'hc3b;
      402: out3 <= 12'hc3a;
      403: out3 <= 12'hc39;
      404: out3 <= 12'hc38;
      405: out3 <= 12'hc37;
      406: out3 <= 12'hc36;
      407: out3 <= 12'hc35;
      408: out3 <= 12'hc34;
      409: out3 <= 12'hc33;
      410: out3 <= 12'hc32;
      411: out3 <= 12'hc31;
      412: out3 <= 12'hc30;
      413: out3 <= 12'hc2f;
      414: out3 <= 12'hc2e;
      415: out3 <= 12'hc2d;
      416: out3 <= 12'hc2c;
      417: out3 <= 12'hc2b;
      418: out3 <= 12'hc2a;
      419: out3 <= 12'hc29;
      420: out3 <= 12'hc29;
      421: out3 <= 12'hc28;
      422: out3 <= 12'hc27;
      423: out3 <= 12'hc26;
      424: out3 <= 12'hc25;
      425: out3 <= 12'hc24;
      426: out3 <= 12'hc23;
      427: out3 <= 12'hc23;
      428: out3 <= 12'hc22;
      429: out3 <= 12'hc21;
      430: out3 <= 12'hc20;
      431: out3 <= 12'hc1f;
      432: out3 <= 12'hc1f;
      433: out3 <= 12'hc1e;
      434: out3 <= 12'hc1d;
      435: out3 <= 12'hc1c;
      436: out3 <= 12'hc1c;
      437: out3 <= 12'hc1b;
      438: out3 <= 12'hc1a;
      439: out3 <= 12'hc1a;
      440: out3 <= 12'hc19;
      441: out3 <= 12'hc18;
      442: out3 <= 12'hc18;
      443: out3 <= 12'hc17;
      444: out3 <= 12'hc16;
      445: out3 <= 12'hc16;
      446: out3 <= 12'hc15;
      447: out3 <= 12'hc14;
      448: out3 <= 12'hc14;
      449: out3 <= 12'hc13;
      450: out3 <= 12'hc12;
      451: out3 <= 12'hc12;
      452: out3 <= 12'hc11;
      453: out3 <= 12'hc11;
      454: out3 <= 12'hc10;
      455: out3 <= 12'hc10;
      456: out3 <= 12'hc0f;
      457: out3 <= 12'hc0f;
      458: out3 <= 12'hc0e;
      459: out3 <= 12'hc0e;
      460: out3 <= 12'hc0d;
      461: out3 <= 12'hc0d;
      462: out3 <= 12'hc0c;
      463: out3 <= 12'hc0c;
      464: out3 <= 12'hc0b;
      465: out3 <= 12'hc0b;
      466: out3 <= 12'hc0a;
      467: out3 <= 12'hc0a;
      468: out3 <= 12'hc09;
      469: out3 <= 12'hc09;
      470: out3 <= 12'hc08;
      471: out3 <= 12'hc08;
      472: out3 <= 12'hc08;
      473: out3 <= 12'hc07;
      474: out3 <= 12'hc07;
      475: out3 <= 12'hc07;
      476: out3 <= 12'hc06;
      477: out3 <= 12'hc06;
      478: out3 <= 12'hc06;
      479: out3 <= 12'hc05;
      480: out3 <= 12'hc05;
      481: out3 <= 12'hc05;
      482: out3 <= 12'hc04;
      483: out3 <= 12'hc04;
      484: out3 <= 12'hc04;
      485: out3 <= 12'hc04;
      486: out3 <= 12'hc03;
      487: out3 <= 12'hc03;
      488: out3 <= 12'hc03;
      489: out3 <= 12'hc03;
      490: out3 <= 12'hc02;
      491: out3 <= 12'hc02;
      492: out3 <= 12'hc02;
      493: out3 <= 12'hc02;
      494: out3 <= 12'hc02;
      495: out3 <= 12'hc01;
      496: out3 <= 12'hc01;
      497: out3 <= 12'hc01;
      498: out3 <= 12'hc01;
      499: out3 <= 12'hc01;
      500: out3 <= 12'hc01;
      501: out3 <= 12'hc01;
      502: out3 <= 12'hc00;
      503: out3 <= 12'hc00;
      504: out3 <= 12'hc00;
      505: out3 <= 12'hc00;
      506: out3 <= 12'hc00;
      507: out3 <= 12'hc00;
      508: out3 <= 12'hc00;
      509: out3 <= 12'hc00;
      510: out3 <= 12'hc00;
      511: out3 <= 12'hc00;
      512: out3 <= 12'hc00;
      513: out3 <= 12'hc00;
      514: out3 <= 12'hc00;
      515: out3 <= 12'hc00;
      516: out3 <= 12'hc00;
      517: out3 <= 12'hc00;
      518: out3 <= 12'hc00;
      519: out3 <= 12'hc00;
      520: out3 <= 12'hc00;
      521: out3 <= 12'hc00;
      522: out3 <= 12'hc00;
      523: out3 <= 12'hc01;
      524: out3 <= 12'hc01;
      525: out3 <= 12'hc01;
      526: out3 <= 12'hc01;
      527: out3 <= 12'hc01;
      528: out3 <= 12'hc01;
      529: out3 <= 12'hc01;
      530: out3 <= 12'hc02;
      531: out3 <= 12'hc02;
      532: out3 <= 12'hc02;
      533: out3 <= 12'hc02;
      534: out3 <= 12'hc02;
      535: out3 <= 12'hc03;
      536: out3 <= 12'hc03;
      537: out3 <= 12'hc03;
      538: out3 <= 12'hc03;
      539: out3 <= 12'hc04;
      540: out3 <= 12'hc04;
      541: out3 <= 12'hc04;
      542: out3 <= 12'hc04;
      543: out3 <= 12'hc05;
      544: out3 <= 12'hc05;
      545: out3 <= 12'hc05;
      546: out3 <= 12'hc06;
      547: out3 <= 12'hc06;
      548: out3 <= 12'hc06;
      549: out3 <= 12'hc07;
      550: out3 <= 12'hc07;
      551: out3 <= 12'hc07;
      552: out3 <= 12'hc08;
      553: out3 <= 12'hc08;
      554: out3 <= 12'hc08;
      555: out3 <= 12'hc09;
      556: out3 <= 12'hc09;
      557: out3 <= 12'hc0a;
      558: out3 <= 12'hc0a;
      559: out3 <= 12'hc0b;
      560: out3 <= 12'hc0b;
      561: out3 <= 12'hc0c;
      562: out3 <= 12'hc0c;
      563: out3 <= 12'hc0d;
      564: out3 <= 12'hc0d;
      565: out3 <= 12'hc0e;
      566: out3 <= 12'hc0e;
      567: out3 <= 12'hc0f;
      568: out3 <= 12'hc0f;
      569: out3 <= 12'hc10;
      570: out3 <= 12'hc10;
      571: out3 <= 12'hc11;
      572: out3 <= 12'hc11;
      573: out3 <= 12'hc12;
      574: out3 <= 12'hc12;
      575: out3 <= 12'hc13;
      576: out3 <= 12'hc14;
      577: out3 <= 12'hc14;
      578: out3 <= 12'hc15;
      579: out3 <= 12'hc16;
      580: out3 <= 12'hc16;
      581: out3 <= 12'hc17;
      582: out3 <= 12'hc18;
      583: out3 <= 12'hc18;
      584: out3 <= 12'hc19;
      585: out3 <= 12'hc1a;
      586: out3 <= 12'hc1a;
      587: out3 <= 12'hc1b;
      588: out3 <= 12'hc1c;
      589: out3 <= 12'hc1c;
      590: out3 <= 12'hc1d;
      591: out3 <= 12'hc1e;
      592: out3 <= 12'hc1f;
      593: out3 <= 12'hc1f;
      594: out3 <= 12'hc20;
      595: out3 <= 12'hc21;
      596: out3 <= 12'hc22;
      597: out3 <= 12'hc23;
      598: out3 <= 12'hc23;
      599: out3 <= 12'hc24;
      600: out3 <= 12'hc25;
      601: out3 <= 12'hc26;
      602: out3 <= 12'hc27;
      603: out3 <= 12'hc28;
      604: out3 <= 12'hc29;
      605: out3 <= 12'hc29;
      606: out3 <= 12'hc2a;
      607: out3 <= 12'hc2b;
      608: out3 <= 12'hc2c;
      609: out3 <= 12'hc2d;
      610: out3 <= 12'hc2e;
      611: out3 <= 12'hc2f;
      612: out3 <= 12'hc30;
      613: out3 <= 12'hc31;
      614: out3 <= 12'hc32;
      615: out3 <= 12'hc33;
      616: out3 <= 12'hc34;
      617: out3 <= 12'hc35;
      618: out3 <= 12'hc36;
      619: out3 <= 12'hc37;
      620: out3 <= 12'hc38;
      621: out3 <= 12'hc39;
      622: out3 <= 12'hc3a;
      623: out3 <= 12'hc3b;
      624: out3 <= 12'hc3c;
      625: out3 <= 12'hc3d;
      626: out3 <= 12'hc3e;
      627: out3 <= 12'hc3f;
      628: out3 <= 12'hc40;
      629: out3 <= 12'hc41;
      630: out3 <= 12'hc42;
      631: out3 <= 12'hc43;
      632: out3 <= 12'hc45;
      633: out3 <= 12'hc46;
      634: out3 <= 12'hc47;
      635: out3 <= 12'hc48;
      636: out3 <= 12'hc49;
      637: out3 <= 12'hc4a;
      638: out3 <= 12'hc4c;
      639: out3 <= 12'hc4d;
      640: out3 <= 12'hc4e;
      641: out3 <= 12'hc4f;
      642: out3 <= 12'hc50;
      643: out3 <= 12'hc52;
      644: out3 <= 12'hc53;
      645: out3 <= 12'hc54;
      646: out3 <= 12'hc55;
      647: out3 <= 12'hc57;
      648: out3 <= 12'hc58;
      649: out3 <= 12'hc59;
      650: out3 <= 12'hc5a;
      651: out3 <= 12'hc5c;
      652: out3 <= 12'hc5d;
      653: out3 <= 12'hc5e;
      654: out3 <= 12'hc60;
      655: out3 <= 12'hc61;
      656: out3 <= 12'hc62;
      657: out3 <= 12'hc64;
      658: out3 <= 12'hc65;
      659: out3 <= 12'hc66;
      660: out3 <= 12'hc68;
      661: out3 <= 12'hc69;
      662: out3 <= 12'hc6b;
      663: out3 <= 12'hc6c;
      664: out3 <= 12'hc6d;
      665: out3 <= 12'hc6f;
      666: out3 <= 12'hc70;
      667: out3 <= 12'hc72;
      668: out3 <= 12'hc73;
      669: out3 <= 12'hc75;
      670: out3 <= 12'hc76;
      671: out3 <= 12'hc77;
      672: out3 <= 12'hc79;
      673: out3 <= 12'hc7a;
      674: out3 <= 12'hc7c;
      675: out3 <= 12'hc7d;
      676: out3 <= 12'hc7f;
      677: out3 <= 12'hc80;
      678: out3 <= 12'hc82;
      679: out3 <= 12'hc83;
      680: out3 <= 12'hc85;
      681: out3 <= 12'hc87;
      682: out3 <= 12'hc88;
      683: out3 <= 12'hc8a;
      684: out3 <= 12'hc8b;
      685: out3 <= 12'hc8d;
      686: out3 <= 12'hc8e;
      687: out3 <= 12'hc90;
      688: out3 <= 12'hc92;
      689: out3 <= 12'hc93;
      690: out3 <= 12'hc95;
      691: out3 <= 12'hc97;
      692: out3 <= 12'hc98;
      693: out3 <= 12'hc9a;
      694: out3 <= 12'hc9c;
      695: out3 <= 12'hc9d;
      696: out3 <= 12'hc9f;
      697: out3 <= 12'hca1;
      698: out3 <= 12'hca2;
      699: out3 <= 12'hca4;
      700: out3 <= 12'hca6;
      701: out3 <= 12'hca7;
      702: out3 <= 12'hca9;
      703: out3 <= 12'hcab;
      704: out3 <= 12'hcad;
      705: out3 <= 12'hcae;
      706: out3 <= 12'hcb0;
      707: out3 <= 12'hcb2;
      708: out3 <= 12'hcb4;
      709: out3 <= 12'hcb5;
      710: out3 <= 12'hcb7;
      711: out3 <= 12'hcb9;
      712: out3 <= 12'hcbb;
      713: out3 <= 12'hcbd;
      714: out3 <= 12'hcbe;
      715: out3 <= 12'hcc0;
      716: out3 <= 12'hcc2;
      717: out3 <= 12'hcc4;
      718: out3 <= 12'hcc6;
      719: out3 <= 12'hcc8;
      720: out3 <= 12'hcca;
      721: out3 <= 12'hccb;
      722: out3 <= 12'hccd;
      723: out3 <= 12'hccf;
      724: out3 <= 12'hcd1;
      725: out3 <= 12'hcd3;
      726: out3 <= 12'hcd5;
      727: out3 <= 12'hcd7;
      728: out3 <= 12'hcd9;
      729: out3 <= 12'hcdb;
      730: out3 <= 12'hcdd;
      731: out3 <= 12'hcdf;
      732: out3 <= 12'hce1;
      733: out3 <= 12'hce2;
      734: out3 <= 12'hce4;
      735: out3 <= 12'hce6;
      736: out3 <= 12'hce8;
      737: out3 <= 12'hcea;
      738: out3 <= 12'hcec;
      739: out3 <= 12'hcee;
      740: out3 <= 12'hcf0;
      741: out3 <= 12'hcf2;
      742: out3 <= 12'hcf5;
      743: out3 <= 12'hcf7;
      744: out3 <= 12'hcf9;
      745: out3 <= 12'hcfb;
      746: out3 <= 12'hcfd;
      747: out3 <= 12'hcff;
      748: out3 <= 12'hd01;
      749: out3 <= 12'hd03;
      750: out3 <= 12'hd05;
      751: out3 <= 12'hd07;
      752: out3 <= 12'hd09;
      753: out3 <= 12'hd0b;
      754: out3 <= 12'hd0d;
      755: out3 <= 12'hd10;
      756: out3 <= 12'hd12;
      757: out3 <= 12'hd14;
      758: out3 <= 12'hd16;
      759: out3 <= 12'hd18;
      760: out3 <= 12'hd1a;
      761: out3 <= 12'hd1d;
      762: out3 <= 12'hd1f;
      763: out3 <= 12'hd21;
      764: out3 <= 12'hd23;
      765: out3 <= 12'hd25;
      766: out3 <= 12'hd27;
      767: out3 <= 12'hd2a;
      768: out3 <= 12'hd2c;
      769: out3 <= 12'hd2e;
      770: out3 <= 12'hd30;
      771: out3 <= 12'hd33;
      772: out3 <= 12'hd35;
      773: out3 <= 12'hd37;
      774: out3 <= 12'hd39;
      775: out3 <= 12'hd3c;
      776: out3 <= 12'hd3e;
      777: out3 <= 12'hd40;
      778: out3 <= 12'hd42;
      779: out3 <= 12'hd45;
      780: out3 <= 12'hd47;
      781: out3 <= 12'hd49;
      782: out3 <= 12'hd4c;
      783: out3 <= 12'hd4e;
      784: out3 <= 12'hd50;
      785: out3 <= 12'hd53;
      786: out3 <= 12'hd55;
      787: out3 <= 12'hd57;
      788: out3 <= 12'hd5a;
      789: out3 <= 12'hd5c;
      790: out3 <= 12'hd5e;
      791: out3 <= 12'hd61;
      792: out3 <= 12'hd63;
      793: out3 <= 12'hd66;
      794: out3 <= 12'hd68;
      795: out3 <= 12'hd6a;
      796: out3 <= 12'hd6d;
      797: out3 <= 12'hd6f;
      798: out3 <= 12'hd72;
      799: out3 <= 12'hd74;
      800: out3 <= 12'hd76;
      801: out3 <= 12'hd79;
      802: out3 <= 12'hd7b;
      803: out3 <= 12'hd7e;
      804: out3 <= 12'hd80;
      805: out3 <= 12'hd83;
      806: out3 <= 12'hd85;
      807: out3 <= 12'hd88;
      808: out3 <= 12'hd8a;
      809: out3 <= 12'hd8c;
      810: out3 <= 12'hd8f;
      811: out3 <= 12'hd91;
      812: out3 <= 12'hd94;
      813: out3 <= 12'hd96;
      814: out3 <= 12'hd99;
      815: out3 <= 12'hd9b;
      816: out3 <= 12'hd9e;
      817: out3 <= 12'hda1;
      818: out3 <= 12'hda3;
      819: out3 <= 12'hda6;
      820: out3 <= 12'hda8;
      821: out3 <= 12'hdab;
      822: out3 <= 12'hdad;
      823: out3 <= 12'hdb0;
      824: out3 <= 12'hdb2;
      825: out3 <= 12'hdb5;
      826: out3 <= 12'hdb8;
      827: out3 <= 12'hdba;
      828: out3 <= 12'hdbd;
      829: out3 <= 12'hdbf;
      830: out3 <= 12'hdc2;
      831: out3 <= 12'hdc4;
      832: out3 <= 12'hdc7;
      833: out3 <= 12'hdca;
      834: out3 <= 12'hdcc;
      835: out3 <= 12'hdcf;
      836: out3 <= 12'hdd2;
      837: out3 <= 12'hdd4;
      838: out3 <= 12'hdd7;
      839: out3 <= 12'hdda;
      840: out3 <= 12'hddc;
      841: out3 <= 12'hddf;
      842: out3 <= 12'hde1;
      843: out3 <= 12'hde4;
      844: out3 <= 12'hde7;
      845: out3 <= 12'hde9;
      846: out3 <= 12'hdec;
      847: out3 <= 12'hdef;
      848: out3 <= 12'hdf2;
      849: out3 <= 12'hdf4;
      850: out3 <= 12'hdf7;
      851: out3 <= 12'hdfa;
      852: out3 <= 12'hdfc;
      853: out3 <= 12'hdff;
      854: out3 <= 12'he02;
      855: out3 <= 12'he05;
      856: out3 <= 12'he07;
      857: out3 <= 12'he0a;
      858: out3 <= 12'he0d;
      859: out3 <= 12'he0f;
      860: out3 <= 12'he12;
      861: out3 <= 12'he15;
      862: out3 <= 12'he18;
      863: out3 <= 12'he1b;
      864: out3 <= 12'he1d;
      865: out3 <= 12'he20;
      866: out3 <= 12'he23;
      867: out3 <= 12'he26;
      868: out3 <= 12'he28;
      869: out3 <= 12'he2b;
      870: out3 <= 12'he2e;
      871: out3 <= 12'he31;
      872: out3 <= 12'he34;
      873: out3 <= 12'he36;
      874: out3 <= 12'he39;
      875: out3 <= 12'he3c;
      876: out3 <= 12'he3f;
      877: out3 <= 12'he42;
      878: out3 <= 12'he45;
      879: out3 <= 12'he47;
      880: out3 <= 12'he4a;
      881: out3 <= 12'he4d;
      882: out3 <= 12'he50;
      883: out3 <= 12'he53;
      884: out3 <= 12'he56;
      885: out3 <= 12'he58;
      886: out3 <= 12'he5b;
      887: out3 <= 12'he5e;
      888: out3 <= 12'he61;
      889: out3 <= 12'he64;
      890: out3 <= 12'he67;
      891: out3 <= 12'he6a;
      892: out3 <= 12'he6d;
      893: out3 <= 12'he6f;
      894: out3 <= 12'he72;
      895: out3 <= 12'he75;
      896: out3 <= 12'he78;
      897: out3 <= 12'he7b;
      898: out3 <= 12'he7e;
      899: out3 <= 12'he81;
      900: out3 <= 12'he84;
      901: out3 <= 12'he87;
      902: out3 <= 12'he8a;
      903: out3 <= 12'he8d;
      904: out3 <= 12'he8f;
      905: out3 <= 12'he92;
      906: out3 <= 12'he95;
      907: out3 <= 12'he98;
      908: out3 <= 12'he9b;
      909: out3 <= 12'he9e;
      910: out3 <= 12'hea1;
      911: out3 <= 12'hea4;
      912: out3 <= 12'hea7;
      913: out3 <= 12'heaa;
      914: out3 <= 12'head;
      915: out3 <= 12'heb0;
      916: out3 <= 12'heb3;
      917: out3 <= 12'heb6;
      918: out3 <= 12'heb9;
      919: out3 <= 12'hebc;
      920: out3 <= 12'hebf;
      921: out3 <= 12'hec2;
      922: out3 <= 12'hec5;
      923: out3 <= 12'hec8;
      924: out3 <= 12'hecb;
      925: out3 <= 12'hece;
      926: out3 <= 12'hed1;
      927: out3 <= 12'hed4;
      928: out3 <= 12'hed7;
      929: out3 <= 12'heda;
      930: out3 <= 12'hedd;
      931: out3 <= 12'hee0;
      932: out3 <= 12'hee3;
      933: out3 <= 12'hee6;
      934: out3 <= 12'hee9;
      935: out3 <= 12'heec;
      936: out3 <= 12'heef;
      937: out3 <= 12'hef2;
      938: out3 <= 12'hef5;
      939: out3 <= 12'hef8;
      940: out3 <= 12'hefb;
      941: out3 <= 12'hefe;
      942: out3 <= 12'hf01;
      943: out3 <= 12'hf04;
      944: out3 <= 12'hf07;
      945: out3 <= 12'hf0a;
      946: out3 <= 12'hf0d;
      947: out3 <= 12'hf10;
      948: out3 <= 12'hf13;
      949: out3 <= 12'hf16;
      950: out3 <= 12'hf1a;
      951: out3 <= 12'hf1d;
      952: out3 <= 12'hf20;
      953: out3 <= 12'hf23;
      954: out3 <= 12'hf26;
      955: out3 <= 12'hf29;
      956: out3 <= 12'hf2c;
      957: out3 <= 12'hf2f;
      958: out3 <= 12'hf32;
      959: out3 <= 12'hf35;
      960: out3 <= 12'hf38;
      961: out3 <= 12'hf3b;
      962: out3 <= 12'hf3e;
      963: out3 <= 12'hf41;
      964: out3 <= 12'hf45;
      965: out3 <= 12'hf48;
      966: out3 <= 12'hf4b;
      967: out3 <= 12'hf4e;
      968: out3 <= 12'hf51;
      969: out3 <= 12'hf54;
      970: out3 <= 12'hf57;
      971: out3 <= 12'hf5a;
      972: out3 <= 12'hf5d;
      973: out3 <= 12'hf60;
      974: out3 <= 12'hf64;
      975: out3 <= 12'hf67;
      976: out3 <= 12'hf6a;
      977: out3 <= 12'hf6d;
      978: out3 <= 12'hf70;
      979: out3 <= 12'hf73;
      980: out3 <= 12'hf76;
      981: out3 <= 12'hf79;
      982: out3 <= 12'hf7c;
      983: out3 <= 12'hf80;
      984: out3 <= 12'hf83;
      985: out3 <= 12'hf86;
      986: out3 <= 12'hf89;
      987: out3 <= 12'hf8c;
      988: out3 <= 12'hf8f;
      989: out3 <= 12'hf92;
      990: out3 <= 12'hf95;
      991: out3 <= 12'hf99;
      992: out3 <= 12'hf9c;
      993: out3 <= 12'hf9f;
      994: out3 <= 12'hfa2;
      995: out3 <= 12'hfa5;
      996: out3 <= 12'hfa8;
      997: out3 <= 12'hfab;
      998: out3 <= 12'hfae;
      999: out3 <= 12'hfb2;
      1000: out3 <= 12'hfb5;
      1001: out3 <= 12'hfb8;
      1002: out3 <= 12'hfbb;
      1003: out3 <= 12'hfbe;
      1004: out3 <= 12'hfc1;
      1005: out3 <= 12'hfc4;
      1006: out3 <= 12'hfc7;
      1007: out3 <= 12'hfcb;
      1008: out3 <= 12'hfce;
      1009: out3 <= 12'hfd1;
      1010: out3 <= 12'hfd4;
      1011: out3 <= 12'hfd7;
      1012: out3 <= 12'hfda;
      1013: out3 <= 12'hfdd;
      1014: out3 <= 12'hfe1;
      1015: out3 <= 12'hfe4;
      1016: out3 <= 12'hfe7;
      1017: out3 <= 12'hfea;
      1018: out3 <= 12'hfed;
      1019: out3 <= 12'hff0;
      1020: out3 <= 12'hff3;
      1021: out3 <= 12'hff7;
      1022: out3 <= 12'hffa;
      1023: out3 <= 12'hffd;
      1024: out3 <= 12'h0;
      1025: out3 <= 12'hffa;
      1026: out3 <= 12'hff3;
      1027: out3 <= 12'hfed;
      1028: out3 <= 12'hfe7;
      1029: out3 <= 12'hfe1;
      1030: out3 <= 12'hfda;
      1031: out3 <= 12'hfd4;
      1032: out3 <= 12'hfce;
      1033: out3 <= 12'hfc7;
      1034: out3 <= 12'hfc1;
      1035: out3 <= 12'hfbb;
      1036: out3 <= 12'hfb5;
      1037: out3 <= 12'hfae;
      1038: out3 <= 12'hfa8;
      1039: out3 <= 12'hfa2;
      1040: out3 <= 12'hf9c;
      1041: out3 <= 12'hf95;
      1042: out3 <= 12'hf8f;
      1043: out3 <= 12'hf89;
      1044: out3 <= 12'hf83;
      1045: out3 <= 12'hf7c;
      1046: out3 <= 12'hf76;
      1047: out3 <= 12'hf70;
      1048: out3 <= 12'hf6a;
      1049: out3 <= 12'hf64;
      1050: out3 <= 12'hf5d;
      1051: out3 <= 12'hf57;
      1052: out3 <= 12'hf51;
      1053: out3 <= 12'hf4b;
      1054: out3 <= 12'hf45;
      1055: out3 <= 12'hf3e;
      1056: out3 <= 12'hf38;
      1057: out3 <= 12'hf32;
      1058: out3 <= 12'hf2c;
      1059: out3 <= 12'hf26;
      1060: out3 <= 12'hf20;
      1061: out3 <= 12'hf1a;
      1062: out3 <= 12'hf13;
      1063: out3 <= 12'hf0d;
      1064: out3 <= 12'hf07;
      1065: out3 <= 12'hf01;
      1066: out3 <= 12'hefb;
      1067: out3 <= 12'hef5;
      1068: out3 <= 12'heef;
      1069: out3 <= 12'hee9;
      1070: out3 <= 12'hee3;
      1071: out3 <= 12'hedd;
      1072: out3 <= 12'hed7;
      1073: out3 <= 12'hed1;
      1074: out3 <= 12'hecb;
      1075: out3 <= 12'hec5;
      1076: out3 <= 12'hebf;
      1077: out3 <= 12'heb9;
      1078: out3 <= 12'heb3;
      1079: out3 <= 12'head;
      1080: out3 <= 12'hea7;
      1081: out3 <= 12'hea1;
      1082: out3 <= 12'he9b;
      1083: out3 <= 12'he95;
      1084: out3 <= 12'he8f;
      1085: out3 <= 12'he8a;
      1086: out3 <= 12'he84;
      1087: out3 <= 12'he7e;
      1088: out3 <= 12'he78;
      1089: out3 <= 12'he72;
      1090: out3 <= 12'he6d;
      1091: out3 <= 12'he67;
      1092: out3 <= 12'he61;
      1093: out3 <= 12'he5b;
      1094: out3 <= 12'he56;
      1095: out3 <= 12'he50;
      1096: out3 <= 12'he4a;
      1097: out3 <= 12'he45;
      1098: out3 <= 12'he3f;
      1099: out3 <= 12'he39;
      1100: out3 <= 12'he34;
      1101: out3 <= 12'he2e;
      1102: out3 <= 12'he28;
      1103: out3 <= 12'he23;
      1104: out3 <= 12'he1d;
      1105: out3 <= 12'he18;
      1106: out3 <= 12'he12;
      1107: out3 <= 12'he0d;
      1108: out3 <= 12'he07;
      1109: out3 <= 12'he02;
      1110: out3 <= 12'hdfc;
      1111: out3 <= 12'hdf7;
      1112: out3 <= 12'hdf2;
      1113: out3 <= 12'hdec;
      1114: out3 <= 12'hde7;
      1115: out3 <= 12'hde1;
      1116: out3 <= 12'hddc;
      1117: out3 <= 12'hdd7;
      1118: out3 <= 12'hdd2;
      1119: out3 <= 12'hdcc;
      1120: out3 <= 12'hdc7;
      1121: out3 <= 12'hdc2;
      1122: out3 <= 12'hdbd;
      1123: out3 <= 12'hdb8;
      1124: out3 <= 12'hdb2;
      1125: out3 <= 12'hdad;
      1126: out3 <= 12'hda8;
      1127: out3 <= 12'hda3;
      1128: out3 <= 12'hd9e;
      1129: out3 <= 12'hd99;
      1130: out3 <= 12'hd94;
      1131: out3 <= 12'hd8f;
      1132: out3 <= 12'hd8a;
      1133: out3 <= 12'hd85;
      1134: out3 <= 12'hd80;
      1135: out3 <= 12'hd7b;
      1136: out3 <= 12'hd76;
      1137: out3 <= 12'hd72;
      1138: out3 <= 12'hd6d;
      1139: out3 <= 12'hd68;
      1140: out3 <= 12'hd63;
      1141: out3 <= 12'hd5e;
      1142: out3 <= 12'hd5a;
      1143: out3 <= 12'hd55;
      1144: out3 <= 12'hd50;
      1145: out3 <= 12'hd4c;
      1146: out3 <= 12'hd47;
      1147: out3 <= 12'hd42;
      1148: out3 <= 12'hd3e;
      1149: out3 <= 12'hd39;
      1150: out3 <= 12'hd35;
      1151: out3 <= 12'hd30;
      1152: out3 <= 12'hd2c;
      1153: out3 <= 12'hd27;
      1154: out3 <= 12'hd23;
      1155: out3 <= 12'hd1f;
      1156: out3 <= 12'hd1a;
      1157: out3 <= 12'hd16;
      1158: out3 <= 12'hd12;
      1159: out3 <= 12'hd0d;
      1160: out3 <= 12'hd09;
      1161: out3 <= 12'hd05;
      1162: out3 <= 12'hd01;
      1163: out3 <= 12'hcfd;
      1164: out3 <= 12'hcf9;
      1165: out3 <= 12'hcf5;
      1166: out3 <= 12'hcf0;
      1167: out3 <= 12'hcec;
      1168: out3 <= 12'hce8;
      1169: out3 <= 12'hce4;
      1170: out3 <= 12'hce1;
      1171: out3 <= 12'hcdd;
      1172: out3 <= 12'hcd9;
      1173: out3 <= 12'hcd5;
      1174: out3 <= 12'hcd1;
      1175: out3 <= 12'hccd;
      1176: out3 <= 12'hcca;
      1177: out3 <= 12'hcc6;
      1178: out3 <= 12'hcc2;
      1179: out3 <= 12'hcbe;
      1180: out3 <= 12'hcbb;
      1181: out3 <= 12'hcb7;
      1182: out3 <= 12'hcb4;
      1183: out3 <= 12'hcb0;
      1184: out3 <= 12'hcad;
      1185: out3 <= 12'hca9;
      1186: out3 <= 12'hca6;
      1187: out3 <= 12'hca2;
      1188: out3 <= 12'hc9f;
      1189: out3 <= 12'hc9c;
      1190: out3 <= 12'hc98;
      1191: out3 <= 12'hc95;
      1192: out3 <= 12'hc92;
      1193: out3 <= 12'hc8e;
      1194: out3 <= 12'hc8b;
      1195: out3 <= 12'hc88;
      1196: out3 <= 12'hc85;
      1197: out3 <= 12'hc82;
      1198: out3 <= 12'hc7f;
      1199: out3 <= 12'hc7c;
      1200: out3 <= 12'hc79;
      1201: out3 <= 12'hc76;
      1202: out3 <= 12'hc73;
      1203: out3 <= 12'hc70;
      1204: out3 <= 12'hc6d;
      1205: out3 <= 12'hc6b;
      1206: out3 <= 12'hc68;
      1207: out3 <= 12'hc65;
      1208: out3 <= 12'hc62;
      1209: out3 <= 12'hc60;
      1210: out3 <= 12'hc5d;
      1211: out3 <= 12'hc5a;
      1212: out3 <= 12'hc58;
      1213: out3 <= 12'hc55;
      1214: out3 <= 12'hc53;
      1215: out3 <= 12'hc50;
      1216: out3 <= 12'hc4e;
      1217: out3 <= 12'hc4c;
      1218: out3 <= 12'hc49;
      1219: out3 <= 12'hc47;
      1220: out3 <= 12'hc45;
      1221: out3 <= 12'hc42;
      1222: out3 <= 12'hc40;
      1223: out3 <= 12'hc3e;
      1224: out3 <= 12'hc3c;
      1225: out3 <= 12'hc3a;
      1226: out3 <= 12'hc38;
      1227: out3 <= 12'hc36;
      1228: out3 <= 12'hc34;
      1229: out3 <= 12'hc32;
      1230: out3 <= 12'hc30;
      1231: out3 <= 12'hc2e;
      1232: out3 <= 12'hc2c;
      1233: out3 <= 12'hc2a;
      1234: out3 <= 12'hc29;
      1235: out3 <= 12'hc27;
      1236: out3 <= 12'hc25;
      1237: out3 <= 12'hc23;
      1238: out3 <= 12'hc22;
      1239: out3 <= 12'hc20;
      1240: out3 <= 12'hc1f;
      1241: out3 <= 12'hc1d;
      1242: out3 <= 12'hc1c;
      1243: out3 <= 12'hc1a;
      1244: out3 <= 12'hc19;
      1245: out3 <= 12'hc18;
      1246: out3 <= 12'hc16;
      1247: out3 <= 12'hc15;
      1248: out3 <= 12'hc14;
      1249: out3 <= 12'hc12;
      1250: out3 <= 12'hc11;
      1251: out3 <= 12'hc10;
      1252: out3 <= 12'hc0f;
      1253: out3 <= 12'hc0e;
      1254: out3 <= 12'hc0d;
      1255: out3 <= 12'hc0c;
      1256: out3 <= 12'hc0b;
      1257: out3 <= 12'hc0a;
      1258: out3 <= 12'hc09;
      1259: out3 <= 12'hc08;
      1260: out3 <= 12'hc08;
      1261: out3 <= 12'hc07;
      1262: out3 <= 12'hc06;
      1263: out3 <= 12'hc06;
      1264: out3 <= 12'hc05;
      1265: out3 <= 12'hc04;
      1266: out3 <= 12'hc04;
      1267: out3 <= 12'hc03;
      1268: out3 <= 12'hc03;
      1269: out3 <= 12'hc02;
      1270: out3 <= 12'hc02;
      1271: out3 <= 12'hc02;
      1272: out3 <= 12'hc01;
      1273: out3 <= 12'hc01;
      1274: out3 <= 12'hc01;
      1275: out3 <= 12'hc00;
      1276: out3 <= 12'hc00;
      1277: out3 <= 12'hc00;
      1278: out3 <= 12'hc00;
      1279: out3 <= 12'hc00;
      1280: out3 <= 12'hc00;
      1281: out3 <= 12'hc00;
      1282: out3 <= 12'hc00;
      1283: out3 <= 12'hc00;
      1284: out3 <= 12'hc00;
      1285: out3 <= 12'hc00;
      1286: out3 <= 12'hc01;
      1287: out3 <= 12'hc01;
      1288: out3 <= 12'hc01;
      1289: out3 <= 12'hc02;
      1290: out3 <= 12'hc02;
      1291: out3 <= 12'hc02;
      1292: out3 <= 12'hc03;
      1293: out3 <= 12'hc03;
      1294: out3 <= 12'hc04;
      1295: out3 <= 12'hc04;
      1296: out3 <= 12'hc05;
      1297: out3 <= 12'hc06;
      1298: out3 <= 12'hc06;
      1299: out3 <= 12'hc07;
      1300: out3 <= 12'hc08;
      1301: out3 <= 12'hc08;
      1302: out3 <= 12'hc09;
      1303: out3 <= 12'hc0a;
      1304: out3 <= 12'hc0b;
      1305: out3 <= 12'hc0c;
      1306: out3 <= 12'hc0d;
      1307: out3 <= 12'hc0e;
      1308: out3 <= 12'hc0f;
      1309: out3 <= 12'hc10;
      1310: out3 <= 12'hc11;
      1311: out3 <= 12'hc12;
      1312: out3 <= 12'hc14;
      1313: out3 <= 12'hc15;
      1314: out3 <= 12'hc16;
      1315: out3 <= 12'hc18;
      1316: out3 <= 12'hc19;
      1317: out3 <= 12'hc1a;
      1318: out3 <= 12'hc1c;
      1319: out3 <= 12'hc1d;
      1320: out3 <= 12'hc1f;
      1321: out3 <= 12'hc20;
      1322: out3 <= 12'hc22;
      1323: out3 <= 12'hc23;
      1324: out3 <= 12'hc25;
      1325: out3 <= 12'hc27;
      1326: out3 <= 12'hc29;
      1327: out3 <= 12'hc2a;
      1328: out3 <= 12'hc2c;
      1329: out3 <= 12'hc2e;
      1330: out3 <= 12'hc30;
      1331: out3 <= 12'hc32;
      1332: out3 <= 12'hc34;
      1333: out3 <= 12'hc36;
      1334: out3 <= 12'hc38;
      1335: out3 <= 12'hc3a;
      1336: out3 <= 12'hc3c;
      1337: out3 <= 12'hc3e;
      1338: out3 <= 12'hc40;
      1339: out3 <= 12'hc42;
      1340: out3 <= 12'hc45;
      1341: out3 <= 12'hc47;
      1342: out3 <= 12'hc49;
      1343: out3 <= 12'hc4c;
      1344: out3 <= 12'hc4e;
      1345: out3 <= 12'hc50;
      1346: out3 <= 12'hc53;
      1347: out3 <= 12'hc55;
      1348: out3 <= 12'hc58;
      1349: out3 <= 12'hc5a;
      1350: out3 <= 12'hc5d;
      1351: out3 <= 12'hc60;
      1352: out3 <= 12'hc62;
      1353: out3 <= 12'hc65;
      1354: out3 <= 12'hc68;
      1355: out3 <= 12'hc6b;
      1356: out3 <= 12'hc6d;
      1357: out3 <= 12'hc70;
      1358: out3 <= 12'hc73;
      1359: out3 <= 12'hc76;
      1360: out3 <= 12'hc79;
      1361: out3 <= 12'hc7c;
      1362: out3 <= 12'hc7f;
      1363: out3 <= 12'hc82;
      1364: out3 <= 12'hc85;
      1365: out3 <= 12'hc88;
      1366: out3 <= 12'hc8b;
      1367: out3 <= 12'hc8e;
      1368: out3 <= 12'hc92;
      1369: out3 <= 12'hc95;
      1370: out3 <= 12'hc98;
      1371: out3 <= 12'hc9c;
      1372: out3 <= 12'hc9f;
      1373: out3 <= 12'hca2;
      1374: out3 <= 12'hca6;
      1375: out3 <= 12'hca9;
      1376: out3 <= 12'hcad;
      1377: out3 <= 12'hcb0;
      1378: out3 <= 12'hcb4;
      1379: out3 <= 12'hcb7;
      1380: out3 <= 12'hcbb;
      1381: out3 <= 12'hcbe;
      1382: out3 <= 12'hcc2;
      1383: out3 <= 12'hcc6;
      1384: out3 <= 12'hcca;
      1385: out3 <= 12'hccd;
      1386: out3 <= 12'hcd1;
      1387: out3 <= 12'hcd5;
      1388: out3 <= 12'hcd9;
      1389: out3 <= 12'hcdd;
      1390: out3 <= 12'hce1;
      1391: out3 <= 12'hce4;
      1392: out3 <= 12'hce8;
      1393: out3 <= 12'hcec;
      1394: out3 <= 12'hcf0;
      1395: out3 <= 12'hcf5;
      1396: out3 <= 12'hcf9;
      1397: out3 <= 12'hcfd;
      1398: out3 <= 12'hd01;
      1399: out3 <= 12'hd05;
      1400: out3 <= 12'hd09;
      1401: out3 <= 12'hd0d;
      1402: out3 <= 12'hd12;
      1403: out3 <= 12'hd16;
      1404: out3 <= 12'hd1a;
      1405: out3 <= 12'hd1f;
      1406: out3 <= 12'hd23;
      1407: out3 <= 12'hd27;
      1408: out3 <= 12'hd2c;
      1409: out3 <= 12'hd30;
      1410: out3 <= 12'hd35;
      1411: out3 <= 12'hd39;
      1412: out3 <= 12'hd3e;
      1413: out3 <= 12'hd42;
      1414: out3 <= 12'hd47;
      1415: out3 <= 12'hd4c;
      1416: out3 <= 12'hd50;
      1417: out3 <= 12'hd55;
      1418: out3 <= 12'hd5a;
      1419: out3 <= 12'hd5e;
      1420: out3 <= 12'hd63;
      1421: out3 <= 12'hd68;
      1422: out3 <= 12'hd6d;
      1423: out3 <= 12'hd72;
      1424: out3 <= 12'hd76;
      1425: out3 <= 12'hd7b;
      1426: out3 <= 12'hd80;
      1427: out3 <= 12'hd85;
      1428: out3 <= 12'hd8a;
      1429: out3 <= 12'hd8f;
      1430: out3 <= 12'hd94;
      1431: out3 <= 12'hd99;
      1432: out3 <= 12'hd9e;
      1433: out3 <= 12'hda3;
      1434: out3 <= 12'hda8;
      1435: out3 <= 12'hdad;
      1436: out3 <= 12'hdb2;
      1437: out3 <= 12'hdb8;
      1438: out3 <= 12'hdbd;
      1439: out3 <= 12'hdc2;
      1440: out3 <= 12'hdc7;
      1441: out3 <= 12'hdcc;
      1442: out3 <= 12'hdd2;
      1443: out3 <= 12'hdd7;
      1444: out3 <= 12'hddc;
      1445: out3 <= 12'hde1;
      1446: out3 <= 12'hde7;
      1447: out3 <= 12'hdec;
      1448: out3 <= 12'hdf2;
      1449: out3 <= 12'hdf7;
      1450: out3 <= 12'hdfc;
      1451: out3 <= 12'he02;
      1452: out3 <= 12'he07;
      1453: out3 <= 12'he0d;
      1454: out3 <= 12'he12;
      1455: out3 <= 12'he18;
      1456: out3 <= 12'he1d;
      1457: out3 <= 12'he23;
      1458: out3 <= 12'he28;
      1459: out3 <= 12'he2e;
      1460: out3 <= 12'he34;
      1461: out3 <= 12'he39;
      1462: out3 <= 12'he3f;
      1463: out3 <= 12'he45;
      1464: out3 <= 12'he4a;
      1465: out3 <= 12'he50;
      1466: out3 <= 12'he56;
      1467: out3 <= 12'he5b;
      1468: out3 <= 12'he61;
      1469: out3 <= 12'he67;
      1470: out3 <= 12'he6d;
      1471: out3 <= 12'he72;
      1472: out3 <= 12'he78;
      1473: out3 <= 12'he7e;
      1474: out3 <= 12'he84;
      1475: out3 <= 12'he8a;
      1476: out3 <= 12'he8f;
      1477: out3 <= 12'he95;
      1478: out3 <= 12'he9b;
      1479: out3 <= 12'hea1;
      1480: out3 <= 12'hea7;
      1481: out3 <= 12'head;
      1482: out3 <= 12'heb3;
      1483: out3 <= 12'heb9;
      1484: out3 <= 12'hebf;
      1485: out3 <= 12'hec5;
      1486: out3 <= 12'hecb;
      1487: out3 <= 12'hed1;
      1488: out3 <= 12'hed7;
      1489: out3 <= 12'hedd;
      1490: out3 <= 12'hee3;
      1491: out3 <= 12'hee9;
      1492: out3 <= 12'heef;
      1493: out3 <= 12'hef5;
      1494: out3 <= 12'hefb;
      1495: out3 <= 12'hf01;
      1496: out3 <= 12'hf07;
      1497: out3 <= 12'hf0d;
      1498: out3 <= 12'hf13;
      1499: out3 <= 12'hf1a;
      1500: out3 <= 12'hf20;
      1501: out3 <= 12'hf26;
      1502: out3 <= 12'hf2c;
      1503: out3 <= 12'hf32;
      1504: out3 <= 12'hf38;
      1505: out3 <= 12'hf3e;
      1506: out3 <= 12'hf45;
      1507: out3 <= 12'hf4b;
      1508: out3 <= 12'hf51;
      1509: out3 <= 12'hf57;
      1510: out3 <= 12'hf5d;
      1511: out3 <= 12'hf64;
      1512: out3 <= 12'hf6a;
      1513: out3 <= 12'hf70;
      1514: out3 <= 12'hf76;
      1515: out3 <= 12'hf7c;
      1516: out3 <= 12'hf83;
      1517: out3 <= 12'hf89;
      1518: out3 <= 12'hf8f;
      1519: out3 <= 12'hf95;
      1520: out3 <= 12'hf9c;
      1521: out3 <= 12'hfa2;
      1522: out3 <= 12'hfa8;
      1523: out3 <= 12'hfae;
      1524: out3 <= 12'hfb5;
      1525: out3 <= 12'hfbb;
      1526: out3 <= 12'hfc1;
      1527: out3 <= 12'hfc7;
      1528: out3 <= 12'hfce;
      1529: out3 <= 12'hfd4;
      1530: out3 <= 12'hfda;
      1531: out3 <= 12'hfe1;
      1532: out3 <= 12'hfe7;
      1533: out3 <= 12'hfed;
      1534: out3 <= 12'hff3;
      1535: out3 <= 12'hffa;
      1536: out3 <= 12'h0;
      1537: out3 <= 12'h6;
      1538: out3 <= 12'hd;
      1539: out3 <= 12'h13;
      1540: out3 <= 12'h19;
      1541: out3 <= 12'h1f;
      1542: out3 <= 12'h26;
      1543: out3 <= 12'h2c;
      1544: out3 <= 12'h32;
      1545: out3 <= 12'h39;
      1546: out3 <= 12'h3f;
      1547: out3 <= 12'h45;
      1548: out3 <= 12'h4b;
      1549: out3 <= 12'h52;
      1550: out3 <= 12'h58;
      1551: out3 <= 12'h5e;
      1552: out3 <= 12'h64;
      1553: out3 <= 12'h6b;
      1554: out3 <= 12'h71;
      1555: out3 <= 12'h77;
      1556: out3 <= 12'h7d;
      1557: out3 <= 12'h84;
      1558: out3 <= 12'h8a;
      1559: out3 <= 12'h90;
      1560: out3 <= 12'h96;
      1561: out3 <= 12'h9c;
      1562: out3 <= 12'ha3;
      1563: out3 <= 12'ha9;
      1564: out3 <= 12'haf;
      1565: out3 <= 12'hb5;
      1566: out3 <= 12'hbb;
      1567: out3 <= 12'hc2;
      1568: out3 <= 12'hc8;
      1569: out3 <= 12'hce;
      1570: out3 <= 12'hd4;
      1571: out3 <= 12'hda;
      1572: out3 <= 12'he0;
      1573: out3 <= 12'he6;
      1574: out3 <= 12'hed;
      1575: out3 <= 12'hf3;
      1576: out3 <= 12'hf9;
      1577: out3 <= 12'hff;
      1578: out3 <= 12'h105;
      1579: out3 <= 12'h10b;
      1580: out3 <= 12'h111;
      1581: out3 <= 12'h117;
      1582: out3 <= 12'h11d;
      1583: out3 <= 12'h123;
      1584: out3 <= 12'h129;
      1585: out3 <= 12'h12f;
      1586: out3 <= 12'h135;
      1587: out3 <= 12'h13b;
      1588: out3 <= 12'h141;
      1589: out3 <= 12'h147;
      1590: out3 <= 12'h14d;
      1591: out3 <= 12'h153;
      1592: out3 <= 12'h159;
      1593: out3 <= 12'h15f;
      1594: out3 <= 12'h165;
      1595: out3 <= 12'h16b;
      1596: out3 <= 12'h171;
      1597: out3 <= 12'h176;
      1598: out3 <= 12'h17c;
      1599: out3 <= 12'h182;
      1600: out3 <= 12'h188;
      1601: out3 <= 12'h18e;
      1602: out3 <= 12'h193;
      1603: out3 <= 12'h199;
      1604: out3 <= 12'h19f;
      1605: out3 <= 12'h1a5;
      1606: out3 <= 12'h1aa;
      1607: out3 <= 12'h1b0;
      1608: out3 <= 12'h1b6;
      1609: out3 <= 12'h1bb;
      1610: out3 <= 12'h1c1;
      1611: out3 <= 12'h1c7;
      1612: out3 <= 12'h1cc;
      1613: out3 <= 12'h1d2;
      1614: out3 <= 12'h1d8;
      1615: out3 <= 12'h1dd;
      1616: out3 <= 12'h1e3;
      1617: out3 <= 12'h1e8;
      1618: out3 <= 12'h1ee;
      1619: out3 <= 12'h1f3;
      1620: out3 <= 12'h1f9;
      1621: out3 <= 12'h1fe;
      1622: out3 <= 12'h204;
      1623: out3 <= 12'h209;
      1624: out3 <= 12'h20e;
      1625: out3 <= 12'h214;
      1626: out3 <= 12'h219;
      1627: out3 <= 12'h21f;
      1628: out3 <= 12'h224;
      1629: out3 <= 12'h229;
      1630: out3 <= 12'h22e;
      1631: out3 <= 12'h234;
      1632: out3 <= 12'h239;
      1633: out3 <= 12'h23e;
      1634: out3 <= 12'h243;
      1635: out3 <= 12'h248;
      1636: out3 <= 12'h24e;
      1637: out3 <= 12'h253;
      1638: out3 <= 12'h258;
      1639: out3 <= 12'h25d;
      1640: out3 <= 12'h262;
      1641: out3 <= 12'h267;
      1642: out3 <= 12'h26c;
      1643: out3 <= 12'h271;
      1644: out3 <= 12'h276;
      1645: out3 <= 12'h27b;
      1646: out3 <= 12'h280;
      1647: out3 <= 12'h285;
      1648: out3 <= 12'h28a;
      1649: out3 <= 12'h28e;
      1650: out3 <= 12'h293;
      1651: out3 <= 12'h298;
      1652: out3 <= 12'h29d;
      1653: out3 <= 12'h2a2;
      1654: out3 <= 12'h2a6;
      1655: out3 <= 12'h2ab;
      1656: out3 <= 12'h2b0;
      1657: out3 <= 12'h2b4;
      1658: out3 <= 12'h2b9;
      1659: out3 <= 12'h2be;
      1660: out3 <= 12'h2c2;
      1661: out3 <= 12'h2c7;
      1662: out3 <= 12'h2cb;
      1663: out3 <= 12'h2d0;
      1664: out3 <= 12'h2d4;
      1665: out3 <= 12'h2d9;
      1666: out3 <= 12'h2dd;
      1667: out3 <= 12'h2e1;
      1668: out3 <= 12'h2e6;
      1669: out3 <= 12'h2ea;
      1670: out3 <= 12'h2ee;
      1671: out3 <= 12'h2f3;
      1672: out3 <= 12'h2f7;
      1673: out3 <= 12'h2fb;
      1674: out3 <= 12'h2ff;
      1675: out3 <= 12'h303;
      1676: out3 <= 12'h307;
      1677: out3 <= 12'h30b;
      1678: out3 <= 12'h310;
      1679: out3 <= 12'h314;
      1680: out3 <= 12'h318;
      1681: out3 <= 12'h31c;
      1682: out3 <= 12'h31f;
      1683: out3 <= 12'h323;
      1684: out3 <= 12'h327;
      1685: out3 <= 12'h32b;
      1686: out3 <= 12'h32f;
      1687: out3 <= 12'h333;
      1688: out3 <= 12'h336;
      1689: out3 <= 12'h33a;
      1690: out3 <= 12'h33e;
      1691: out3 <= 12'h342;
      1692: out3 <= 12'h345;
      1693: out3 <= 12'h349;
      1694: out3 <= 12'h34c;
      1695: out3 <= 12'h350;
      1696: out3 <= 12'h353;
      1697: out3 <= 12'h357;
      1698: out3 <= 12'h35a;
      1699: out3 <= 12'h35e;
      1700: out3 <= 12'h361;
      1701: out3 <= 12'h364;
      1702: out3 <= 12'h368;
      1703: out3 <= 12'h36b;
      1704: out3 <= 12'h36e;
      1705: out3 <= 12'h372;
      1706: out3 <= 12'h375;
      1707: out3 <= 12'h378;
      1708: out3 <= 12'h37b;
      1709: out3 <= 12'h37e;
      1710: out3 <= 12'h381;
      1711: out3 <= 12'h384;
      1712: out3 <= 12'h387;
      1713: out3 <= 12'h38a;
      1714: out3 <= 12'h38d;
      1715: out3 <= 12'h390;
      1716: out3 <= 12'h393;
      1717: out3 <= 12'h395;
      1718: out3 <= 12'h398;
      1719: out3 <= 12'h39b;
      1720: out3 <= 12'h39e;
      1721: out3 <= 12'h3a0;
      1722: out3 <= 12'h3a3;
      1723: out3 <= 12'h3a6;
      1724: out3 <= 12'h3a8;
      1725: out3 <= 12'h3ab;
      1726: out3 <= 12'h3ad;
      1727: out3 <= 12'h3b0;
      1728: out3 <= 12'h3b2;
      1729: out3 <= 12'h3b4;
      1730: out3 <= 12'h3b7;
      1731: out3 <= 12'h3b9;
      1732: out3 <= 12'h3bb;
      1733: out3 <= 12'h3be;
      1734: out3 <= 12'h3c0;
      1735: out3 <= 12'h3c2;
      1736: out3 <= 12'h3c4;
      1737: out3 <= 12'h3c6;
      1738: out3 <= 12'h3c8;
      1739: out3 <= 12'h3ca;
      1740: out3 <= 12'h3cc;
      1741: out3 <= 12'h3ce;
      1742: out3 <= 12'h3d0;
      1743: out3 <= 12'h3d2;
      1744: out3 <= 12'h3d4;
      1745: out3 <= 12'h3d6;
      1746: out3 <= 12'h3d7;
      1747: out3 <= 12'h3d9;
      1748: out3 <= 12'h3db;
      1749: out3 <= 12'h3dd;
      1750: out3 <= 12'h3de;
      1751: out3 <= 12'h3e0;
      1752: out3 <= 12'h3e1;
      1753: out3 <= 12'h3e3;
      1754: out3 <= 12'h3e4;
      1755: out3 <= 12'h3e6;
      1756: out3 <= 12'h3e7;
      1757: out3 <= 12'h3e8;
      1758: out3 <= 12'h3ea;
      1759: out3 <= 12'h3eb;
      1760: out3 <= 12'h3ec;
      1761: out3 <= 12'h3ee;
      1762: out3 <= 12'h3ef;
      1763: out3 <= 12'h3f0;
      1764: out3 <= 12'h3f1;
      1765: out3 <= 12'h3f2;
      1766: out3 <= 12'h3f3;
      1767: out3 <= 12'h3f4;
      1768: out3 <= 12'h3f5;
      1769: out3 <= 12'h3f6;
      1770: out3 <= 12'h3f7;
      1771: out3 <= 12'h3f8;
      1772: out3 <= 12'h3f8;
      1773: out3 <= 12'h3f9;
      1774: out3 <= 12'h3fa;
      1775: out3 <= 12'h3fa;
      1776: out3 <= 12'h3fb;
      1777: out3 <= 12'h3fc;
      1778: out3 <= 12'h3fc;
      1779: out3 <= 12'h3fd;
      1780: out3 <= 12'h3fd;
      1781: out3 <= 12'h3fe;
      1782: out3 <= 12'h3fe;
      1783: out3 <= 12'h3fe;
      1784: out3 <= 12'h3ff;
      1785: out3 <= 12'h3ff;
      1786: out3 <= 12'h3ff;
      1787: out3 <= 12'h400;
      1788: out3 <= 12'h400;
      1789: out3 <= 12'h400;
      1790: out3 <= 12'h400;
      1791: out3 <= 12'h400;
      1792: out3 <= 12'h400;
      1793: out3 <= 12'h400;
      1794: out3 <= 12'h400;
      1795: out3 <= 12'h400;
      1796: out3 <= 12'h400;
      1797: out3 <= 12'h400;
      1798: out3 <= 12'h3ff;
      1799: out3 <= 12'h3ff;
      1800: out3 <= 12'h3ff;
      1801: out3 <= 12'h3fe;
      1802: out3 <= 12'h3fe;
      1803: out3 <= 12'h3fe;
      1804: out3 <= 12'h3fd;
      1805: out3 <= 12'h3fd;
      1806: out3 <= 12'h3fc;
      1807: out3 <= 12'h3fc;
      1808: out3 <= 12'h3fb;
      1809: out3 <= 12'h3fa;
      1810: out3 <= 12'h3fa;
      1811: out3 <= 12'h3f9;
      1812: out3 <= 12'h3f8;
      1813: out3 <= 12'h3f8;
      1814: out3 <= 12'h3f7;
      1815: out3 <= 12'h3f6;
      1816: out3 <= 12'h3f5;
      1817: out3 <= 12'h3f4;
      1818: out3 <= 12'h3f3;
      1819: out3 <= 12'h3f2;
      1820: out3 <= 12'h3f1;
      1821: out3 <= 12'h3f0;
      1822: out3 <= 12'h3ef;
      1823: out3 <= 12'h3ee;
      1824: out3 <= 12'h3ec;
      1825: out3 <= 12'h3eb;
      1826: out3 <= 12'h3ea;
      1827: out3 <= 12'h3e8;
      1828: out3 <= 12'h3e7;
      1829: out3 <= 12'h3e6;
      1830: out3 <= 12'h3e4;
      1831: out3 <= 12'h3e3;
      1832: out3 <= 12'h3e1;
      1833: out3 <= 12'h3e0;
      1834: out3 <= 12'h3de;
      1835: out3 <= 12'h3dd;
      1836: out3 <= 12'h3db;
      1837: out3 <= 12'h3d9;
      1838: out3 <= 12'h3d7;
      1839: out3 <= 12'h3d6;
      1840: out3 <= 12'h3d4;
      1841: out3 <= 12'h3d2;
      1842: out3 <= 12'h3d0;
      1843: out3 <= 12'h3ce;
      1844: out3 <= 12'h3cc;
      1845: out3 <= 12'h3ca;
      1846: out3 <= 12'h3c8;
      1847: out3 <= 12'h3c6;
      1848: out3 <= 12'h3c4;
      1849: out3 <= 12'h3c2;
      1850: out3 <= 12'h3c0;
      1851: out3 <= 12'h3be;
      1852: out3 <= 12'h3bb;
      1853: out3 <= 12'h3b9;
      1854: out3 <= 12'h3b7;
      1855: out3 <= 12'h3b4;
      1856: out3 <= 12'h3b2;
      1857: out3 <= 12'h3b0;
      1858: out3 <= 12'h3ad;
      1859: out3 <= 12'h3ab;
      1860: out3 <= 12'h3a8;
      1861: out3 <= 12'h3a6;
      1862: out3 <= 12'h3a3;
      1863: out3 <= 12'h3a0;
      1864: out3 <= 12'h39e;
      1865: out3 <= 12'h39b;
      1866: out3 <= 12'h398;
      1867: out3 <= 12'h395;
      1868: out3 <= 12'h393;
      1869: out3 <= 12'h390;
      1870: out3 <= 12'h38d;
      1871: out3 <= 12'h38a;
      1872: out3 <= 12'h387;
      1873: out3 <= 12'h384;
      1874: out3 <= 12'h381;
      1875: out3 <= 12'h37e;
      1876: out3 <= 12'h37b;
      1877: out3 <= 12'h378;
      1878: out3 <= 12'h375;
      1879: out3 <= 12'h372;
      1880: out3 <= 12'h36e;
      1881: out3 <= 12'h36b;
      1882: out3 <= 12'h368;
      1883: out3 <= 12'h364;
      1884: out3 <= 12'h361;
      1885: out3 <= 12'h35e;
      1886: out3 <= 12'h35a;
      1887: out3 <= 12'h357;
      1888: out3 <= 12'h353;
      1889: out3 <= 12'h350;
      1890: out3 <= 12'h34c;
      1891: out3 <= 12'h349;
      1892: out3 <= 12'h345;
      1893: out3 <= 12'h342;
      1894: out3 <= 12'h33e;
      1895: out3 <= 12'h33a;
      1896: out3 <= 12'h336;
      1897: out3 <= 12'h333;
      1898: out3 <= 12'h32f;
      1899: out3 <= 12'h32b;
      1900: out3 <= 12'h327;
      1901: out3 <= 12'h323;
      1902: out3 <= 12'h31f;
      1903: out3 <= 12'h31c;
      1904: out3 <= 12'h318;
      1905: out3 <= 12'h314;
      1906: out3 <= 12'h310;
      1907: out3 <= 12'h30b;
      1908: out3 <= 12'h307;
      1909: out3 <= 12'h303;
      1910: out3 <= 12'h2ff;
      1911: out3 <= 12'h2fb;
      1912: out3 <= 12'h2f7;
      1913: out3 <= 12'h2f3;
      1914: out3 <= 12'h2ee;
      1915: out3 <= 12'h2ea;
      1916: out3 <= 12'h2e6;
      1917: out3 <= 12'h2e1;
      1918: out3 <= 12'h2dd;
      1919: out3 <= 12'h2d9;
      1920: out3 <= 12'h2d4;
      1921: out3 <= 12'h2d0;
      1922: out3 <= 12'h2cb;
      1923: out3 <= 12'h2c7;
      1924: out3 <= 12'h2c2;
      1925: out3 <= 12'h2be;
      1926: out3 <= 12'h2b9;
      1927: out3 <= 12'h2b4;
      1928: out3 <= 12'h2b0;
      1929: out3 <= 12'h2ab;
      1930: out3 <= 12'h2a6;
      1931: out3 <= 12'h2a2;
      1932: out3 <= 12'h29d;
      1933: out3 <= 12'h298;
      1934: out3 <= 12'h293;
      1935: out3 <= 12'h28e;
      1936: out3 <= 12'h28a;
      1937: out3 <= 12'h285;
      1938: out3 <= 12'h280;
      1939: out3 <= 12'h27b;
      1940: out3 <= 12'h276;
      1941: out3 <= 12'h271;
      1942: out3 <= 12'h26c;
      1943: out3 <= 12'h267;
      1944: out3 <= 12'h262;
      1945: out3 <= 12'h25d;
      1946: out3 <= 12'h258;
      1947: out3 <= 12'h253;
      1948: out3 <= 12'h24e;
      1949: out3 <= 12'h248;
      1950: out3 <= 12'h243;
      1951: out3 <= 12'h23e;
      1952: out3 <= 12'h239;
      1953: out3 <= 12'h234;
      1954: out3 <= 12'h22e;
      1955: out3 <= 12'h229;
      1956: out3 <= 12'h224;
      1957: out3 <= 12'h21f;
      1958: out3 <= 12'h219;
      1959: out3 <= 12'h214;
      1960: out3 <= 12'h20e;
      1961: out3 <= 12'h209;
      1962: out3 <= 12'h204;
      1963: out3 <= 12'h1fe;
      1964: out3 <= 12'h1f9;
      1965: out3 <= 12'h1f3;
      1966: out3 <= 12'h1ee;
      1967: out3 <= 12'h1e8;
      1968: out3 <= 12'h1e3;
      1969: out3 <= 12'h1dd;
      1970: out3 <= 12'h1d8;
      1971: out3 <= 12'h1d2;
      1972: out3 <= 12'h1cc;
      1973: out3 <= 12'h1c7;
      1974: out3 <= 12'h1c1;
      1975: out3 <= 12'h1bb;
      1976: out3 <= 12'h1b6;
      1977: out3 <= 12'h1b0;
      1978: out3 <= 12'h1aa;
      1979: out3 <= 12'h1a5;
      1980: out3 <= 12'h19f;
      1981: out3 <= 12'h199;
      1982: out3 <= 12'h193;
      1983: out3 <= 12'h18e;
      1984: out3 <= 12'h188;
      1985: out3 <= 12'h182;
      1986: out3 <= 12'h17c;
      1987: out3 <= 12'h176;
      1988: out3 <= 12'h171;
      1989: out3 <= 12'h16b;
      1990: out3 <= 12'h165;
      1991: out3 <= 12'h15f;
      1992: out3 <= 12'h159;
      1993: out3 <= 12'h153;
      1994: out3 <= 12'h14d;
      1995: out3 <= 12'h147;
      1996: out3 <= 12'h141;
      1997: out3 <= 12'h13b;
      1998: out3 <= 12'h135;
      1999: out3 <= 12'h12f;
      2000: out3 <= 12'h129;
      2001: out3 <= 12'h123;
      2002: out3 <= 12'h11d;
      2003: out3 <= 12'h117;
      2004: out3 <= 12'h111;
      2005: out3 <= 12'h10b;
      2006: out3 <= 12'h105;
      2007: out3 <= 12'hff;
      2008: out3 <= 12'hf9;
      2009: out3 <= 12'hf3;
      2010: out3 <= 12'hed;
      2011: out3 <= 12'he6;
      2012: out3 <= 12'he0;
      2013: out3 <= 12'hda;
      2014: out3 <= 12'hd4;
      2015: out3 <= 12'hce;
      2016: out3 <= 12'hc8;
      2017: out3 <= 12'hc2;
      2018: out3 <= 12'hbb;
      2019: out3 <= 12'hb5;
      2020: out3 <= 12'haf;
      2021: out3 <= 12'ha9;
      2022: out3 <= 12'ha3;
      2023: out3 <= 12'h9c;
      2024: out3 <= 12'h96;
      2025: out3 <= 12'h90;
      2026: out3 <= 12'h8a;
      2027: out3 <= 12'h84;
      2028: out3 <= 12'h7d;
      2029: out3 <= 12'h77;
      2030: out3 <= 12'h71;
      2031: out3 <= 12'h6b;
      2032: out3 <= 12'h64;
      2033: out3 <= 12'h5e;
      2034: out3 <= 12'h58;
      2035: out3 <= 12'h52;
      2036: out3 <= 12'h4b;
      2037: out3 <= 12'h45;
      2038: out3 <= 12'h3f;
      2039: out3 <= 12'h39;
      2040: out3 <= 12'h32;
      2041: out3 <= 12'h2c;
      2042: out3 <= 12'h26;
      2043: out3 <= 12'h1f;
      2044: out3 <= 12'h19;
      2045: out3 <= 12'h13;
      2046: out3 <= 12'hd;
      2047: out3 <= 12'h6;
      default: out3 <= 0;
   endcase
   end
// synthesis attribute rom_style of out3 is "block"
endmodule



// Latency: 11
// Gap: 1
module codeBlock41778(clk, reset, next_in, next_out,
   i2_in,
   i1_in,
   X0_in, Y0,
   X1_in, Y1,
   X2_in, Y2,
   X3_in, Y3);

   output next_out;
   input clk, reset, next_in;

   reg next;
   input [9:0] i2_in;
   reg [9:0] i2;
   input [4:0] i1_in;
   reg [4:0] i1;

   input [11:0] X0_in,
      X1_in,
      X2_in,
      X3_in;

   reg   [11:0] X0,
      X1,
      X2,
      X3;

   output [11:0] Y0,
      Y1,
      Y2,
      Y3;

   shiftRegFIFO #(10, 1) shiftFIFO_46356(.X(next), .Y(next_out), .clk(clk));


   wire  [10:0] a57;
   wire  [9:0] a59;
   wire  [10:0] a60;
   wire signed [11:0] a70;
   wire signed [11:0] a71;
   wire  [11:0] a58;
   reg  [10:0] tm15;
   reg signed [11:0] tm16;
   reg signed [11:0] tm23;
   reg signed [11:0] tm44;
   reg signed [11:0] tm54;
   reg  [11:0] a61;
   wire  [10:0] a62;
   reg signed [11:0] tm17;
   reg signed [11:0] tm24;
   reg signed [11:0] tm45;
   reg signed [11:0] tm55;
   wire  [11:0] a63;
   reg signed [11:0] tm18;
   reg signed [11:0] tm25;
   reg signed [11:0] tm46;
   reg signed [11:0] tm56;
   reg signed [11:0] tm19;
   reg signed [11:0] tm26;
   reg signed [11:0] tm47;
   reg signed [11:0] tm57;
   reg signed [11:0] tm20;
   reg signed [11:0] tm27;
   reg signed [11:0] tm48;
   reg signed [11:0] tm58;
   wire signed [11:0] tm5;
   wire signed [11:0] a64;
   wire signed [11:0] tm6;
   wire signed [11:0] a66;
   reg signed [11:0] tm21;
   reg signed [11:0] tm28;
   reg signed [11:0] tm49;
   reg signed [11:0] tm59;
   reg signed [11:0] tm7;
   reg signed [11:0] tm8;
   reg signed [11:0] tm22;
   reg signed [11:0] tm29;
   reg signed [11:0] tm50;
   reg signed [11:0] tm60;
   reg signed [11:0] tm51;
   reg signed [11:0] tm61;
   wire signed [11:0] a65;
   wire signed [11:0] a67;
   wire signed [11:0] a68;
   wire signed [11:0] a69;
   reg signed [11:0] tm52;
   reg signed [11:0] tm62;
   wire signed [11:0] Y0;
   wire signed [11:0] Y1;
   wire signed [11:0] Y2;
   wire signed [11:0] Y3;
   reg signed [11:0] tm53;
   reg signed [11:0] tm63;

   wire [0:0] tm1;
   assign tm1 = 1'h1;
   wire [9:0] tm2;
   assign tm2 = 10'h3ff;
   wire [10:0] tm4;
   assign tm4 = 11'h400;

   assign a57 = i2 << 1;
   assign a59 = tm2 << i1;
   assign a60 = {a59, tm1[0:0]};
   assign a70 = X2;
   assign a71 = X3;
   assign a62 = {a61[0:0], a61[10:1]};
   assign a64 = tm5;
   assign a66 = tm6;
   assign Y0 = tm53;
   assign Y1 = tm63;

   D1_43962 instD1inst0_43962(.addr(a63[10:0]), .out(tm5), .clk(clk));

   D2_46012 instD2inst0_46012(.addr(a63[10:0]), .out(tm6), .clk(clk));

    addfxp #(12, 1) add41797(.a({1'b0, a57}), .b({11'b0, tm1}), .clk(clk), .q(a58));    // 0
    subfxp #(12, 1) sub41829(.a({1'b0, a62}), .b({1'b0, tm4}), .clk(clk), .q(a63));    // 2
    multfix #(12, 2) m41851(.a(tm7), .b(tm22), .clk(clk), .q_sc(a65), .q_unsc(), .rst(reset));
    multfix #(12, 2) m41873(.a(tm8), .b(tm29), .clk(clk), .q_sc(a67), .q_unsc(), .rst(reset));
    multfix #(12, 2) m41891(.a(tm8), .b(tm22), .clk(clk), .q_sc(a68), .q_unsc(), .rst(reset));
    multfix #(12, 2) m41902(.a(tm7), .b(tm29), .clk(clk), .q_sc(a69), .q_unsc(), .rst(reset));
    subfxp #(12, 1) sub41880(.a(a65), .b(a67), .clk(clk), .q(Y2));    // 9
    addfxp #(12, 1) add41909(.a(a68), .b(a69), .clk(clk), .q(Y3));    // 9


   always @(posedge clk) begin
      if (reset == 1) begin
         tm7 <= 0;
         tm22 <= 0;
         tm8 <= 0;
         tm29 <= 0;
         tm8 <= 0;
         tm22 <= 0;
         tm7 <= 0;
         tm29 <= 0;
      end
      else begin
         i2 <= i2_in;
         i1 <= i1_in;
         X0 <= X0_in;
         X1 <= X1_in;
         X2 <= X2_in;
         X3 <= X3_in;
         next <= next_in;
         tm15 <= a60;
         tm16 <= a70;
         tm23 <= a71;
         tm44 <= X0;
         tm54 <= X1;
         a61 <= (a58 & tm15);
         tm17 <= tm16;
         tm24 <= tm23;
         tm45 <= tm44;
         tm55 <= tm54;
         tm18 <= tm17;
         tm25 <= tm24;
         tm46 <= tm45;
         tm56 <= tm55;
         tm19 <= tm18;
         tm26 <= tm25;
         tm47 <= tm46;
         tm57 <= tm56;
         tm20 <= tm19;
         tm27 <= tm26;
         tm48 <= tm47;
         tm58 <= tm57;
         tm21 <= tm20;
         tm28 <= tm27;
         tm49 <= tm48;
         tm59 <= tm58;
         tm7 <= a64;
         tm8 <= a66;
         tm22 <= tm21;
         tm29 <= tm28;
         tm50 <= tm49;
         tm60 <= tm59;
         tm51 <= tm50;
         tm61 <= tm60;
         tm52 <= tm51;
         tm62 <= tm61;
         tm53 <= tm52;
         tm63 <= tm62;
      end
   end
endmodule

// Latency: 2
// Gap: 1
module codeBlock46016(clk, reset, next_in, next_out,
   X0_in, Y0,
   X1_in, Y1,
   X2_in, Y2,
   X3_in, Y3);

   output next_out;
   input clk, reset, next_in;

   reg next;

   input [11:0] X0_in,
      X1_in,
      X2_in,
      X3_in;

   reg   [11:0] X0,
      X1,
      X2,
      X3;

   output [11:0] Y0,
      Y1,
      Y2,
      Y3;

   shiftRegFIFO #(1, 1) shiftFIFO_46359(.X(next), .Y(next_out), .clk(clk));


   wire signed [11:0] a9;
   wire signed [11:0] a10;
   wire signed [11:0] a11;
   wire signed [11:0] a12;
   wire signed [12:0] tm11;
   wire signed [12:0] tm12;
   wire signed [12:0] tm13;
   wire signed [12:0] tm14;
   wire signed [11:0] Y0;
   wire signed [11:0] Y1;
   wire signed [11:0] Y2;
   wire signed [11:0] Y3;
   wire signed [11:0] t21;
   wire signed [11:0] t22;
   wire signed [11:0] t23;
   wire signed [11:0] t24;


   assign a9 = X0;
   assign a10 = X2;
   assign a11 = X1;
   assign a12 = X3;
   assign Y0 = t21;
   assign Y1 = t22;
   assign Y2 = t23;
   assign Y3 = t24;
   assign t21 = tm11[12:1];
   assign t22 = tm12[12:1];
   assign t23 = tm13[12:1];
   assign t24 = tm14[12:1];

    addfxp #(13, 1) add46028(.a({{1{a9[11]}}, a9}), .b({{1{a10[11]}}, a10}), .clk(clk), .q(tm11));    // 0
    addfxp #(13, 1) add46043(.a({{1{a11[11]}}, a11}), .b({{1{a12[11]}}, a12}), .clk(clk), .q(tm12));    // 0
    subfxp #(13, 1) sub46058(.a({{1{a9[11]}}, a9}), .b({{1{a10[11]}}, a10}), .clk(clk), .q(tm13));    // 0
    subfxp #(13, 1) sub46073(.a({{1{a11[11]}}, a11}), .b({{1{a12[11]}}, a12}), .clk(clk), .q(tm14));    // 0


   always @(posedge clk) begin
      if (reset == 1) begin
      end
      else begin
         X0 <= X0_in;
         X1 <= X1_in;
         X2 <= X2_in;
         X3 <= X3_in;
         next <= next_in;
      end
   end
endmodule

// Latency: 1012
// Gap: 1024
module rc46097(clk, reset, next, next_out,
   X0, Y0,
   X1, Y1,
   X2, Y2,
   X3, Y3);

   output next_out;
   input clk, reset, next;

   input [11:0] X0,
      X1,
      X2,
      X3;

   output [11:0] Y0,
      Y1,
      Y2,
      Y3;

   wire [23:0] t0;
   wire [23:0] s0;
   assign t0 = {X0, X1};
   wire [23:0] t1;
   wire [23:0] s1;
   assign t1 = {X2, X3};
   assign Y0 = s0[23:12];
   assign Y1 = s0[11:0];
   assign Y2 = s1[23:12];
   assign Y3 = s1[11:0];

   perm46095 instPerm46360(.x0(t0), .y0(s0),
    .x1(t1), .y1(s1),
   .clk(clk), .next(next), .next_out(next_out), .reset(reset)
);



endmodule

// Latency: 1012
// Gap: 1024
module perm46095(clk, next, reset, next_out,
   x0, y0,
   x1, y1);
   parameter numBanks = 2;
   parameter logBanks = 1;
   parameter depth = 1024;
   parameter logDepth = 10;
   parameter width = 24;

   input [width-1:0]  x0;
   output [width-1:0]  y0;
   wire [width-1:0]  ybuff0;
   input [width-1:0]  x1;
   output [width-1:0]  y1;
   wire [width-1:0]  ybuff1;
   input 	      clk, next, reset;
   output 	     next_out;

   wire    	     next0;

   reg              inFlip0, outFlip0;
   reg              inActive, outActive;

   wire [logBanks-1:0] inBank0, outBank0;
   wire [logDepth-1:0] inAddr0, outAddr0;
   wire [logBanks-1:0] outBank_a0;
   wire [logDepth-1:0] outAddr_a0;
   wire [logDepth+logBanks-1:0] addr0, addr0b, addr0c;
   wire [logBanks-1:0] inBank1, outBank1;
   wire [logDepth-1:0] inAddr1, outAddr1;
   wire [logBanks-1:0] outBank_a1;
   wire [logDepth-1:0] outAddr_a1;
   wire [logDepth+logBanks-1:0] addr1, addr1b, addr1c;


   reg [logDepth-1:0]  inCount, outCount, outCount_d, outCount_dd, outCount_for_rd_addr, outCount_for_rd_data;  

   assign    addr0 = {inCount, 1'd0};
   assign    addr0b = {outCount, 1'd0};
   assign    addr0c = {outCount_for_rd_addr, 1'd0};
   assign    addr1 = {inCount, 1'd1};
   assign    addr1b = {outCount, 1'd1};
   assign    addr1c = {outCount_for_rd_addr, 1'd1};
    wire [width+logDepth-1:0] w_0_0, w_0_1, w_1_0, w_1_1;

    reg [width-1:0] z_0_0;
    reg [width-1:0] z_0_1;
    wire [width-1:0] z_1_0, z_1_1;

    wire [logDepth-1:0] u_0_0, u_0_1, u_1_0, u_1_1;

    always @(posedge clk) begin
    end

   assign inBank0[0] = addr0[1] ^ addr0[0];
   assign inAddr0[0] = addr0[2];
   assign inAddr0[1] = addr0[3];
   assign inAddr0[2] = addr0[4];
   assign inAddr0[3] = addr0[5];
   assign inAddr0[4] = addr0[6];
   assign inAddr0[5] = addr0[7];
   assign inAddr0[6] = addr0[8];
   assign inAddr0[7] = addr0[9];
   assign inAddr0[8] = addr0[10];
   assign inAddr0[9] = addr0[0];
   assign outBank0[0] = addr0b[10] ^ addr0b[0];
   assign outAddr0[0] = addr0b[1];
   assign outAddr0[1] = addr0b[2];
   assign outAddr0[2] = addr0b[3];
   assign outAddr0[3] = addr0b[4];
   assign outAddr0[4] = addr0b[5];
   assign outAddr0[5] = addr0b[6];
   assign outAddr0[6] = addr0b[7];
   assign outAddr0[7] = addr0b[8];
   assign outAddr0[8] = addr0b[9];
   assign outAddr0[9] = addr0b[10];
   assign outBank_a0[0] = addr0c[10] ^ addr0c[0];
   assign outAddr_a0[0] = addr0c[1];
   assign outAddr_a0[1] = addr0c[2];
   assign outAddr_a0[2] = addr0c[3];
   assign outAddr_a0[3] = addr0c[4];
   assign outAddr_a0[4] = addr0c[5];
   assign outAddr_a0[5] = addr0c[6];
   assign outAddr_a0[6] = addr0c[7];
   assign outAddr_a0[7] = addr0c[8];
   assign outAddr_a0[8] = addr0c[9];
   assign outAddr_a0[9] = addr0c[10];

   assign inBank1[0] = addr1[1] ^ addr1[0];
   assign inAddr1[0] = addr1[2];
   assign inAddr1[1] = addr1[3];
   assign inAddr1[2] = addr1[4];
   assign inAddr1[3] = addr1[5];
   assign inAddr1[4] = addr1[6];
   assign inAddr1[5] = addr1[7];
   assign inAddr1[6] = addr1[8];
   assign inAddr1[7] = addr1[9];
   assign inAddr1[8] = addr1[10];
   assign inAddr1[9] = addr1[0];
   assign outBank1[0] = addr1b[10] ^ addr1b[0];
   assign outAddr1[0] = addr1b[1];
   assign outAddr1[1] = addr1b[2];
   assign outAddr1[2] = addr1b[3];
   assign outAddr1[3] = addr1b[4];
   assign outAddr1[4] = addr1b[5];
   assign outAddr1[5] = addr1b[6];
   assign outAddr1[6] = addr1b[7];
   assign outAddr1[7] = addr1b[8];
   assign outAddr1[8] = addr1b[9];
   assign outAddr1[9] = addr1b[10];
   assign outBank_a1[0] = addr1c[10] ^ addr1c[0];
   assign outAddr_a1[0] = addr1c[1];
   assign outAddr_a1[1] = addr1c[2];
   assign outAddr_a1[2] = addr1c[3];
   assign outAddr_a1[3] = addr1c[4];
   assign outAddr_a1[4] = addr1c[5];
   assign outAddr_a1[5] = addr1c[6];
   assign outAddr_a1[6] = addr1c[7];
   assign outAddr_a1[7] = addr1c[8];
   assign outAddr_a1[8] = addr1c[9];
   assign outAddr_a1[9] = addr1c[10];

   nextReg #(1010, 10) nextReg_46365(.X(next), .Y(next0), .reset(reset), .clk(clk));


   shiftRegFIFO #(2, 1) shiftFIFO_46368(.X(next0), .Y(next_out), .clk(clk));


   memArray2048_46095 #(numBanks, logBanks, depth, logDepth, width)
     memSys(.inFlip(inFlip0), .outFlip(outFlip0), .next(next), .reset(reset),
        .x0(w_1_0[width+logDepth-1:logDepth]), .y0(ybuff0),
        .inAddr0(w_1_0[logDepth-1:0]),
        .outAddr0(u_1_0), 
        .x1(w_1_1[width+logDepth-1:logDepth]), .y1(ybuff1),
        .inAddr1(w_1_1[logDepth-1:0]),
        .outAddr1(u_1_1), 
        .clk(clk));

   always @(posedge clk) begin
      if (reset == 1) begin
      z_0_0 <= 0;
      z_0_1 <= 0;
         inFlip0 <= 0; outFlip0 <= 1; outCount <= 0; inCount <= 0;
        outCount_for_rd_addr <= 0;
        outCount_for_rd_data <= 0;
      end
      else begin
          outCount_d <= outCount;
          outCount_dd <= outCount_d;
         if (inCount == 1009)
            outCount_for_rd_addr <= 0;
         else
            outCount_for_rd_addr <= outCount_for_rd_addr+1;
         if (inCount == 1011)
            outCount_for_rd_data <= 0;
         else
            outCount_for_rd_data <= outCount_for_rd_data+1;
      z_0_0 <= ybuff0;
      z_0_1 <= ybuff1;
         if (inCount == 1009) begin
            outFlip0 <= ~outFlip0;
            outCount <= 0;
         end
         else
            outCount <= outCount+1;
         if (inCount == 1023) begin
            inFlip0 <= ~inFlip0;
         end
         if (next == 1) begin
            if (inCount >= 1009)
               inFlip0 <= ~inFlip0;
            inCount <= 0;
         end
         else
            inCount <= inCount + 1;
      end
   end
    assign w_0_0 = {x0, inAddr0};
    assign w_0_1 = {x1, inAddr1};
    assign y0 = z_1_0;
    assign y1 = z_1_1;
    assign u_0_0 = outAddr_a0;
    assign u_0_1 = outAddr_a1;
    wire wr_ctrl_st_0;
    assign wr_ctrl_st_0 = inCount[0];

    switch #(logDepth+width) in_sw_0_0(.x0(w_0_0), .x1(w_0_1), .y0(w_1_0), .y1(w_1_1), .ctrl(wr_ctrl_st_0));
    wire rdd_ctrl_st_0;
    assign rdd_ctrl_st_0 = outCount_for_rd_data[9];

    switch #(width) out_sw_0_0(.x0(z_0_0), .x1(z_0_1), .y0(z_1_0), .y1(z_1_1), .ctrl(rdd_ctrl_st_0));
    wire rda_ctrl_st_0;
    assign rda_ctrl_st_0 = outCount_for_rd_addr[9];

    switch #(logDepth) rdaddr_sw_0_0(.x0(u_0_0), .x1(u_0_1), .y0(u_1_0), .y1(u_1_1), .ctrl(rda_ctrl_st_0));
endmodule

module memArray2048_46095(next, reset,
                x0, y0,
                inAddr0,
                outAddr0,
                x1, y1,
                inAddr1,
                outAddr1,
                clk, inFlip, outFlip);

   parameter numBanks = 2;
   parameter logBanks = 1;
   parameter depth = 1024;
   parameter logDepth = 10;
   parameter width = 24;
         
   input     clk, next, reset;
   input    inFlip, outFlip;
   wire    next0;
   
   input [width-1:0]   x0;
   output [width-1:0]  y0;
   input [logDepth-1:0] inAddr0, outAddr0;
   input [width-1:0]   x1;
   output [width-1:0]  y1;
   input [logDepth-1:0] inAddr1, outAddr1;
   nextReg #(1024, 10) nextReg_46373(.X(next), .Y(next0), .reset(reset), .clk(clk));


   memMod #(depth*2, width, logDepth+1) 
     memMod0(.in(x0), .out(y0), .inAddr({inFlip, inAddr0}),
	   .outAddr({outFlip, outAddr0}), .writeSel(1'b1), .clk(clk));   
   memMod #(depth*2, width, logDepth+1) 
     memMod1(.in(x1), .out(y1), .inAddr({inFlip, inAddr1}),
	   .outAddr({outFlip, outAddr1}), .writeSel(1'b1), .clk(clk));   
endmodule



						module multfix(clk, rst, a, b, q_sc, q_unsc);
						   parameter WIDTH=35, CYCLES=6;

						   input signed [WIDTH-1:0]    a,b;
						   output [WIDTH-1:0]          q_sc;
						   output [WIDTH-1:0]              q_unsc;

						   input                       clk, rst;
						   
						   reg signed [2*WIDTH-1:0]    q[CYCLES-1:0];
						   wire signed [2*WIDTH-1:0]   res;   
						   integer                     i;

						   assign                      res = q[CYCLES-1];   
						   
						   assign                      q_unsc = res[WIDTH-1:0];
						   assign                      q_sc = {res[2*WIDTH-1], res[2*WIDTH-4:WIDTH-2]};
						      
						   always @(posedge clk) begin
						      q[0] <= a * b;
						      for (i = 1; i < CYCLES; i=i+1) begin
						         q[i] <= q[i-1];
						      end
						   end
						                  
						endmodule 
module addfxp(a, b, q, clk);

   parameter width = 16, cycles=1;
   
   input signed [width-1:0]  a, b;
   input                     clk;   
   output signed [width-1:0] q;
   reg signed [width-1:0]    res[cycles-1:0];

   assign                    q = res[cycles-1];
   
   integer                   i;   
   
   always @(posedge clk) begin
     res[0] <= a+b;
      for (i=1; i < cycles; i = i+1)
        res[i] <= res[i-1];
      
   end
   
endmodule

module subfxp(a, b, q, clk);

   parameter width = 16, cycles=1;
   
   input signed [width-1:0]  a, b;
   input                     clk;   
   output signed [width-1:0] q;
   reg signed [width-1:0]    res[cycles-1:0];

   assign                    q = res[cycles-1];
   
   integer                   i;   
   
   always @(posedge clk) begin
     res[0] <= a-b;
      for (i=1; i < cycles; i = i+1)
        res[i] <= res[i-1];
      
   end
  
endmodule
